新手请教一个画圆的问题(进者有分)

GARY 2010-10-13 05:12:19
问题描述:
我在Windows CE操作系统中,开发一个小程序,采用mfc基于对话框来编写。
简单来说,就是程序中通过串口接收(下位机发过来的)一些命令。这些命令有
“画点”“画线”“绘制位图”“画矩形”“清屏(其实就是将对话框背景,更改
为全红色,或者全绿色,或者全蓝色)”等等。
现在我在接收下位机通过串口发送过来的“清屏”指令之后,通过Invalidate
函数来刷新背景,在WM_CTLCOLOR消息响应函数中,返回一个相应颜色(红或者绿
或者蓝)的刷子来达到目的。
不过,现在问题出现了。我通过上述方法,修改了对话框背景色之后。当我再次
接收到“画圆”指令,我通过Ellipse函数来画圆。我简单的贴一些代码上来:
	
BYTE *pbuf = (BYTE*)wParam;
CClientDC dc(this);
int iColorR = pbuf[9], iColorG = pbuf[10], iColorB = pbuf[11];
int iRadius = pbuf[7]/16*1000 + pbuf[7]%16*100 + pbuf[8]/16*10 + pbuf[8]%16;
POINT ptOri = {0};
ptOri.x = pbuf[3]/16*1000 + pbuf[3]%16*100 + pbuf[4]/16*10 + pbuf[4]%16;
ptOri.y = pbuf[5]/16*1000 + pbuf[5]%16*100 + pbuf[6]/16*10 + pbuf[6]%16;
CPen pen(PS_SOLID, 1, RGB(iColorR, iColorG, iColorB));
CPen *pOldPen = dc.SelectObject(&pen);
RECT rc = {0};
rc.left = ptOri.x - iRadius;
rc.top = ptOri.y - iRadius;
rc.right = ptOri.x + iRadius;
rc.bottom = ptOri.y + iRadius;
dc.Ellipse(&rc); // 绘制圆形
dc.SelectObject(pOldPen);

这样总是会画一个内部由白色来填充的圆形。在我没有修改对话框背景色之前,通过Ellipse
函数是可以绘制一个只有边框,内部无填充的圆形。现在都变为了白色。我想应该是跟之前修改
对话框背景色时返回的那个指定颜色的画刷有关。但是更改背景又是必须的功能,画圆我又不想画
内部有白色填充的。请大侠们给小弟支招。我是一个刚刚入行的菜鸟。级别低,只有100分奉上。
但只要回帖的就有分数。分数会根据功劳大小而不同。多谢。
...全文
98 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
GARY 2010-10-13
  • 打赏
  • 举报
回复
一是问题太简单
二是VC/MFC板块坛友很热心
问题很快解决,尤其感谢2,3楼的大侠。
剩下时间,大家可以自由接分。
呵呵。
晚上9点前结贴。
GARY 2010-10-13
  • 打赏
  • 举报
回复
一是问题太简单
二是VC/MFC板块坛友很热心
问题很多解决,尤其感谢2,3楼的大侠。
剩下时间,大家可以自由接分。
呵呵。
晚上9点前结贴。
killer2008_520 2010-10-13
  • 打赏
  • 举报
回复
在 WM_PAINT中做所有的绘图操作。

void OnPaint()
{
CPaintDC dc(this);

// 填充背景
dc.FillSolidRect(&rect, RGB(x,y,z));

// 根据绘图指令绘制图形

if (绘制圆)
{
dc.Ellipse(&rc);
}
}
Eleven 2010-10-13
  • 打赏
  • 举报
回复
SelectObject一个NULL_BRUSH
快乐鹦鹉 2010-10-13
  • 打赏
  • 举报
回复
dc.SelectStockObject(NULL_BRUSH);
dc.Ellipse(&rc); // 绘制圆形
petewong 2010-10-13
  • 打赏
  • 举报
回复
CBrush brh(RGB(x,y,z));

CBrush* poldbrh = dc.selectobject(brh);
dc.Ellipse(&rc); // 绘制原型
dc.SelectObject(pOldPen);
dc.SelectObject(pOldbrh);

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧