硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1104|回复: 4
收起左侧

[emWin] emwin的6.x抗锯齿显示不正常的问题,不知道为啥

[复制链接]

2

主题

2

回帖

8

积分

新手上路

积分
8
QQ
发表于 2022-4-29 14:40:43 | 显示全部楼层 |阅读模式
emwin的5.x的抗锯齿显示是正常的,6.x就显示异常,只显示了4个角,把6.x里抗锯齿质量因子调整位1就正常了,但是没抗锯齿显示效果了,现在抗锯齿因子设置为4。

使用emwin 5.x的库

使用emwin 5.x的库

使用emwin 6.x的库

使用emwin 6.x的库
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107137
QQ
发表于 2022-4-29 15:02:22 | 显示全部楼层
底栏的圆角矩形吗,方便的话,发下代码,我试试。
回复

使用道具 举报

2

主题

2

回帖

8

积分

新手上路

积分
8
QQ
 楼主| 发表于 2022-4-29 17:15:11 | 显示全部楼层
eric2013 发表于 2022-4-29 15:02
底栏的圆角矩形吗,方便的话,发下代码,我试试。

不止这一个页面,好多页面抗锯齿都和上面的图一样,显示不对。
这个是初始化部分
static void vTaskGUI(void *argument)
{
    ILI9341_TM280_Initial2();

    WM_SetCreateFlags(WM_CF_MEMDEV);

    GUI_Init();
    GUI_UC_SetEncodeUTF8();

    GUI_AA_EnableHiRes();
    GUI_AA_SetFactor(MAG);

    GUI_EnableAlpha(1);

    WM_MOTION_Enable(1);
    WM_MOTION_SetDefaultPeriod(100);

    BUTTON_SetReactOnLevel();

    GUI_SetColor(GUI_WHITE);
    GUI_SetBkColor(GUI_WHITE);
    GUI_Clear();

这个是按钮回调
static void _cAIShowbButton(WM_MESSAGE *pMsg)
{
  WM_HWIN hWin;
  GUI_RECT Rect;
  hWin = pMsg->hWin;
  switch (pMsg->MsgId)
  {
  case WM_PAINT:
    WM_GetClientRect(&Rect);
    GUI_SetFont(GUI_FONT_20B_ASCII);


    GUI_SetColor(GUI_DARKGREEN);
    GUI_AA_FillRoundedRect(Rect.x0 * MAG, Rect.y0 * MAG, Rect.x1 * MAG, Rect.y1 * MAG, 5 * MAG);
    GUI_SetBkColor(GUI_DARKGREEN);

    GUI_SetColor(GUI_WHITE);
    GUI_DispStringInRect("---", &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER);
   
    break;
  default:
    BUTTON_Callback(pMsg);
  }
}

这个是创建按钮的地方
static void _cbMainWin(WM_MESSAGE *pMsg) //主页回调
{
  WM_HWIN hItem;

  switch (pMsg->MsgId)
  {
  case WM_CREATE:
    hItem = BUTTON_CreateEx(10, 180, 300, 24, pMsg->hWin, WM_CF_SHOW, GUI_TA_HCENTER | GUI_TA_VCENTER, ID_BUTTON_1);
    WM_SetHasTrans(hItem);
    WM_SetCallback(hItem, _cAIShowbButton);
其他的页面所有的抗锯齿都不行,加大了GUI的内存和加大任务堆栈都不行,我回头还是做个最小的工程专门试下,现在代码里还有其他的东西,都贴出来有点乱。
回复

使用道具 举报

2

主题

2

回帖

8

积分

新手上路

积分
8
QQ
 楼主| 发表于 2022-4-29 19:28:08 | 显示全部楼层
eric2013 发表于 2022-4-29 15:02
底栏的圆角矩形吗,方便的话,发下代码,我试试。

其他的窗口里抗锯齿现实的都不好,因为代码里还有其他的东西,有点乱,等回头做个最小的工程试试,还不行就不代码贴上来。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107137
QQ
发表于 2022-4-30 12:01:30 | 显示全部楼层
juggcn 发表于 2022-4-29 19:28
其他的窗口里抗锯齿现实的都不好,因为代码里还有其他的东西,有点乱,等回头做个最小的工程试试,还不行 ...

这个代码看看正常不,标配的示例。


image.png

[C] 纯文本查看 复制代码
/*********************************************************************
* SEGGER Microcontroller GmbH *
* Solutions for real time microcontroller applications *
* *
* emWin example code *
* *
**********************************************************************
----------------------------------------------------------------------
File : AA_Lines.c
Purpose : Shows lines with different antialiasing qualities
----------------------------------------------------------------------
*/
#include "GUI.h"
/*******************************************************************
*
* Show lines with different antialiasing qualities
*
********************************************************************
*/
static void DemoAntialiasing(void) {
int i, x1, x2, y;
y = 2;
//
// Set drawing attributes
//
GUI_SetColor(GUI_BLACK);
GUI_SetBkColor(GUI_WHITE);
GUI_Clear();
x1 = 10;
x2 = 90;
//
// Draw lines without antialiasing
//
GUI_DispStringHCenterAt("\nNormal", (x1 + x2) / 2, 10);
for (i = 1; i < 12; i++) {
GUI_SetPenSize(i);
GUI_DrawLine(x1, 40 + i * 15, x2, 40 + i * 15 + y);
}
x1 = 110;
x2 = 190;
//
// Draw lines with antialiasing quality factor 2
//
GUI_AA_SetFactor(2);
GUI_DispStringHCenterAt("Antialiased\n\nusing factor 2", (x1 + x2) / 2, 10);
for (i = 1; i < 12; i++) {
GUI_SetPenSize(i);
GUI_AA_DrawLine(x1, 40 + i * 15, x2, 40 + i * 15 + y);
}
x1 = 210;
x2 = 290;
//
// Draw lines with antialiasing quality factor 6
//
GUI_AA_SetFactor(6);
GUI_DispStringHCenterAt("Antialiased\n\nusing factor 6", (x1 + x2) / 2, 10);
for (i = 1; i < 12; i++) {
GUI_SetPenSize(i);
GUI_AA_DrawLine(x1, 40 + i * 15, x2, 40 + i * 15 + y);

}
}
/*******************************************************************
*
* MainTask
*
********************************************************************
*/
void MainTask(void) {
GUI_Init();
DemoAntialiasing();
while(1)
GUI_Delay(100);
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-20 04:29 , Processed in 0.173892 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表