硬汉嵌入式论坛

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

[emWin] EMWIN里的多边形函数调用如何更新显示

[复制链接]

1

主题

13

回帖

16

积分

新手上路

积分
16
发表于 2023-8-3 19:26:08 | 显示全部楼层 |阅读模式
本帖最后由 zsp06312222 于 2023-8-3 19:28 编辑



多边形怎么样刷新显示,测试时刷新不了多边形,程序如上,实际显示如下:
三个多边形是闪烁的,不连贯的显示,加了程序的延迟后,直接不显示了,奇怪的问题。
[C] 纯文本查看 复制代码
const GUI_POINT aPoints3[] = 
{
	{ 0,  0 },  //0-0
	{ 5,  0 },  //8-0
	{ 7,  2 },  //11-3
	{ 5,  4 },  //8-6
	{ 0,  4 },  //0-6
};
void MainTask_Test(void) 
{
    int y=5;
    GUI_Clear();
	while (1)
	{
		GUI_SetBkColor(GUI_BLACK);		
//		GUI_Delay(10);
		GUI_ClearRect(0, y, 20, y + 10);
		GUI_SetColor(GUI_WHITE);//GUI_BLUE
		GUI_FillPolygon (aPoints, 5, 0, y + 0); //&_aPointArrow[0]
//		GUI_Delay(2);		
		GUI_ClearRect(0, y+20, 20, y + 10+20);
//		GUI_SetColor(GUI_RED);
		GUI_FillPolygon (aPoints1, 5, 0, y + 20);
//		GUI_Delay(2);		
		GUI_ClearRect(0, y+30, 20, y+10+30);
//		GUI_SetColor(GUI_GREEN);
		GUI_FillPolygon(&aPoints2[0], 5, 0, y + 30);
//		GUI_Delay(10);		
	}
}

3个多边形闪烁的

3个多边形闪烁的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106896
QQ
发表于 2023-8-4 09:59:09 | 显示全部楼层
代码不全,我这里没法测试

12.png
回复

使用道具 举报

1

主题

13

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2023-8-4 10:29:08 | 显示全部楼层
eric2013 发表于 2023-8-4 09:59
代码不全,我这里没法测试

[C] 纯文本查看 复制代码
/* 图形的原始坐标点 */
const GUI_POINT aPoints[] = //三角形
{
//	{ 40, 20},
//	{  0, 20},
//	{ 20,  0},
	
	{ 0,  0 },  //0-0
	{ 5,  0 },  //8-0
	{ 7,  2 },  //11-3
	{ 5,  4 },  //8-6
	{ 0,  4 },  //0-6
};
const GUI_POINT aPoints1[] = //三角形
{
//	{ 40, 20},
//	{  0, 20},
//	{ 20,  0},
	
	{ 0,  0 },  //0-0
	{ 5,  0 },  //8-0
	{ 7,  2 },  //11-3
	{ 5,  4 },  //8-6
	{ 0,  4 },  //0-6
};
const GUI_POINT aPoints2[] = 
{
	{ 0,  0 },  //0-0
	{ 5,  0 },  //8-0
	{ 7,  2 },  //11-3
	{ 5,  4 },  //8-6
	{ 0,  4 },  //0-6
};
/* 用于存储放大后的坐标点 */
GUI_POINT aEnlargedPoints[GUI_COUNTOF(aPoints)];
/* 用于存储放大后的坐标点 */
GUI_POINT aMagnifiedPoints[GUI_COUNTOF(aPoints)];
GUI_POINT aMagnifiedPoints1[GUI_COUNTOF(aPoints1)];
GUI_POINT aMagnifiedPoints2[GUI_COUNTOF(aPoints2)];
回复

使用道具 举报

1

主题

13

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2023-8-4 10:29:48 | 显示全部楼层
eric2013 发表于 2023-8-4 09:59
代码不全,我这里没法测试

数组是同一个,修改下后缀名就行
回复

使用道具 举报

1

主题

13

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2023-8-4 10:46:30 | 显示全部楼层
eric2013 发表于 2023-8-4 09:59
代码不全,我这里没法测试

GUI_FillPolygon()用了后,清不掉对应的多边形,不能刷新对应的多边形
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106896
QQ
发表于 2023-8-4 15:32:49 | 显示全部楼层
zsp06312222 发表于 2023-8-4 10:46
GUI_FillPolygon()用了后,清不掉对应的多边形,不能刷新对应的多边形

正常应该是这样吗

下载 (3).png
回复

使用道具 举报

1

主题

13

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2023-8-5 09:51:33 | 显示全部楼层
eric2013 发表于 2023-8-4 15:32
正常应该是这样吗

我这里显示是闪烁的,有刷屏的那种效果,不知道是不是LIB库的影响,用的是5.22版本的;我要的效果是第一个图标显示后,再第二个显示图标时,第一个图标要去除,第三个类似,就是能循环刷新
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106896
QQ
发表于 2023-8-7 01:14:32 | 显示全部楼层
zsp06312222 发表于 2023-8-5 09:51
我这里显示是闪烁的,有刷屏的那种效果,不知道是不是LIB库的影响,用的是5.22版本的;我要的效果是第一 ...

调节下你的延迟时间,效果就出来了。
回复

使用道具 举报

1

主题

13

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2023-8-7 08:16:18 | 显示全部楼层
eric2013 发表于 2023-8-7 01:14
调节下你的延迟时间,效果就出来了。

开了延迟后,就只显示第一个图标,其他不显示了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 10:03 , Processed in 0.297731 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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