您尚未登录。

楼主 #1 2019-12-03 17:23:17

szchen2006
会员
注册时间: 2019-10-09
已发帖子: 216
积分: 166.5

emWin中,在有背景图的对话框上绘制2D图形,2D图形无法显示,是什么原因呢?谢谢!

我在eimWin5.4中创建了一个对话框,然后给对话框设置了背景图片,接着我在这个对话框的回调函数的WM_PAINT消息里画一个矩形,却无法显示。请教一下大佬们,这是为什么呢?该怎么解决呢?十分感谢!

离线

楼主 #4 2019-12-03 17:40:07

szchen2006
会员
注册时间: 2019-10-09
已发帖子: 216
积分: 166.5

Re: emWin中,在有背景图的对话框上绘制2D图形,2D图形无法显示,是什么原因呢?谢谢!

win32prog 说:

emwin 仿的是 win32 的 api,

如果想收到 WM_PAINT 消息, 那么要调用 WM_InvalidateRect() 函数才行, 这样会重绘。

谢谢你的回复!

不过,我感觉好像是背景图把矩形给覆盖了,所以显示不出来。但我不知道怎么才能解决这个问题。

离线

楼主 #9 2019-12-05 09:21:24

szchen2006
会员
注册时间: 2019-10-09
已发帖子: 216
积分: 166.5

Re: emWin中,在有背景图的对话框上绘制2D图形,2D图形无法显示,是什么原因呢?谢谢!

Jmhh247 说:

楼主,你这个问题,最好把代码片断贴出来,好分析。。。


现在只能猜一下了:

1. 单独测试矩形是否能显示出来?
2. 单独显示背景图是否能显示出来?
3. WM_PAINT消息里面绘图,是有顺序的。
4. 以上都正常,先绘制背景图,再绘制矩形试试。


感谢你的回复!

1.单独能显示出矩形框。
2.单独也能显示出背景图。
3.WM_PAINT里绘图顺序:
    GUI_SetBkColor(GUI_BLACK);
        GUI_SetColor(GUI_RED);
    GUI_Clear();
        GUI_DrawRect();
这样只能看到背景图,看不到画的矩形。不知道怎么回事。再次感谢!

不好意思,不知道怎么上传代码和图片。所以只能简写。

离线

楼主 #10 2019-12-05 09:39:58

szchen2006
会员
注册时间: 2019-10-09
已发帖子: 216
积分: 166.5

Re: emWin中,在有背景图的对话框上绘制2D图形,2D图形无法显示,是什么原因呢?谢谢!

@Jmhh247
大佬,您好!再请教一个问题:我看了你做的界面,很漂亮。我发现我的界面要求和你的稍微有区别:我的窗口背景是一张图片。你的背景好像是颜色填充。这个区别是不是导致了我无法显示矩形呢?
还有,上面帖子里贴的代码不完整,重新贴在下面:
WM_PAINT:
    hImage=WM_GetDialogItem(hDlg, ID_IMAGE_0);
        IMAGE_SetBitmap(hImage,&bmbackground);

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

离线

楼主 #12 2019-12-05 09:54:39

szchen2006
会员
注册时间: 2019-10-09
已发帖子: 216
积分: 166.5

Re: emWin中,在有背景图的对话框上绘制2D图形,2D图形无法显示,是什么原因呢?谢谢!

谢谢晕哥的指导!

离线

楼主 #15 2019-12-05 14:30:10

szchen2006
会员
注册时间: 2019-10-09
已发帖子: 216
积分: 166.5

Re: emWin中,在有背景图的对话框上绘制2D图形,2D图形无法显示,是什么原因呢?谢谢!

@Jmhh247 谢谢你的指导!

现在可以了。

这里不能用IMAGE控件,可能是因为我的背景图充满了整个屏幕,把2D图形给挡住了。

参考了你的代码后,现在可以正常显示了。开始我把顺序搞错了:GUI_DrawBitmap() -> GUI_SetBkColor() -> GUI_SetColor() -> GUI_Clear() -> GUI_DrawRect() 这样可能把背景图给清除掉了,所以我只能看到键盘。后来,我按照你提供的参考代码的顺序修改了后就可以了:GUI_SetBkColor() -> GUI_SetColor() -> GUI_Clear() -> GUI_DrawBitmap() -> GUI_DrawRect() 。

再次谢谢大佬!

离线

楼主 #17 2019-12-05 15:31:25

szchen2006
会员
注册时间: 2019-10-09
已发帖子: 216
积分: 166.5

Re: emWin中,在有背景图的对话框上绘制2D图形,2D图形无法显示,是什么原因呢?谢谢!

myxiaonia 说:

wm_paint里能不能用控件,都不好说,我估计只能用基本图形库吧

从emWin的手册里能找到什么依据不?谢谢!

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn