热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

问题描述:我在WindowsCE操作系统中,开发一个小程序,采用mfc基于对话框来编写。简单来说,就是程序中通过串口接收(下位机发过来的)一些命令。这些命令有“画点”“画线”“绘
问题描述:
    我在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分奉上。
但只要回帖的就有分数。分数会根据功劳大小而不同。多谢。

6 个解决方案

#1


CBrush brh(RGB(x,y,z));

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

#2


dc.SelectStockObject(NULL_BRUSH);
dc.Ellipse(&rc);  // 绘制圆形

#3


SelectObject一个NULL_BRUSH

#4


在 WM_PAINT中做所有的绘图操作。

void OnPaint()
{
CPaintDC dc(this);

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

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

if (绘制圆)
{
dc.Ellipse(&rc); 
}
}

#5


一是问题太简单
二是VC/MFC板块坛友很热心
问题很多解决,尤其感谢2,3楼的大侠。
剩下时间,大家可以自由接分。
呵呵。
晚上9点前结贴。

#6


一是问题太简单
二是VC/MFC板块坛友很热心
问题很快解决,尤其感谢2,3楼的大侠。
剩下时间,大家可以自由接分。
呵呵。
晚上9点前结贴。

推荐阅读
author-avatar
丶沈丨灬de艳本人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有