VC 用GDI函数画椭圆和矩形的问题,请高手帮忙

我想要实现的想法是这样:可以通过点选菜单中的"Rect""Ellipse""line""freeline"像PS中的画图工具那样分别画出矩形,椭圆,直线,和随鼠标自由线现... 我想要实现的想法是这样:

可以通过点选菜单中的"Rect" "Ellipse" "line" "freeline"

像PS中的画图工具那样分别画出矩形,椭圆,直线,和随鼠标自由线

现在功能虽然实现,但是出现一个问题,矩形和圆形都是实心反色的,

我是想让他们只有边框,而且可以互相重叠 而且上图不覆盖下图

(也就是像奥运五环那样的,相互叠在一块但中间是透明的)

我个人感觉可能是SetROP2这个函数没有用对的关系,下面我把源码放上来

请高手指正一下,解决后我会加分的

另外工程文件我也打包上传了纳米盘,也可以直接下载下来改动!
地址:http://www.namipan.com/d/code.rar/c18da366fb482a97bb65e2f69312dde3c1edb6445f0e0000

画椭圆和矩形实现代码部分:
if(drawcontrol==1)//rect
{
SetROP2(hdc,R2_XORPEN);
MoveToEx(hdc,x1,y1,NULL);
Rectangle(hdc,x1,y1,x2,y2);
x2=LOWORD(lParam);
y2=HIWORD(lParam);
MoveToEx(hdc,x1,y1,NULL);
Rectangle(hdc,x1,y1,x2,y2);
SetROP2(hdc,R2_NOT);
}
else if(drawcontrol==2)//ellipse
{
SetROP2(hdc,R2_XORPEN);
MoveToEx(hdc,x1,y1,NULL);
Ellipse(hdc,x1,y1,x2,y2);
x2=LOWORD(lParam);
y2=HIWORD(lParam);
MoveToEx(hdc,x1,y1,NULL);
Ellipse(hdc,x1,y1,x2,y2);

}
展开
 我来答
Dedicatus545__
2009-04-20 · TA获得超过239个赞
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:168万
展开全部
要绘空心的图形 请事先将空刷子选入设备

相关部分改了一下

case WM_MOUSEMOVE:

hdc=GetDC(hWnd);
SelectObject(hdc, GetStockObject(NULL_BRUSH));
SetROP2(hdc,R2_NOT);
if(bDraw==TRUE)
{
if(drawcontrol==1)//rect
{
//SetROP2(hdc,R2_XORPEN);
MoveToEx(hdc,x1,y1,NULL);
Rectangle(hdc,x1,y1,x2,y2);
x2=LOWORD(lParam);
y2=HIWORD(lParam);
MoveToEx(hdc,x1,y1,NULL);
Rectangle(hdc,x1,y1,x2,y2);
SetROP2(hdc,R2_NOT);
}
else if(drawcontrol==2)//ellipse
{
//SetROP2(hdc,R2_XORPEN);
MoveToEx(hdc,x1,y1,NULL);
Ellipse(hdc,x1,y1,x2,y2);
x2=LOWORD(lParam);
y2=HIWORD(lParam);
MoveToEx(hdc,x1,y1,NULL);
Ellipse(hdc,x1,y1,x2,y2);

}
else if(drawcontrol==3)//freeline
{
MoveToEx(hdc,x1,y1,NULL);
x1=LOWORD(lParam);
y1=HIWORD(lParam);
LineTo(hdc,x1,y1);
ReleaseDC(hWnd,hdc);
}
else if(drawcontrol==4)//line
{
MoveToEx(hdc,x1,y1,NULL);
LineTo(hdc,x2,y2);
x2=LOWORD(lParam);
y2=HIWORD(lParam);
MoveToEx(hdc,x1,y1,NULL);
LineTo(hdc,x2,y2);
}

// "if ..." end here
}
ReleaseDC(hWnd,hdc);
return 0;
东莞大凡
2024-08-07 广告
在东莞市大凡光学科技有限公司,我们利用Halcon软件处理机器视觉项目时,会用到自定义标定板以满足特定需求。Halcon支持用户根据实际应用场景自定义标定板形状与标记点。这不仅可以灵活应对不同工作环境,还能提高标定精度。通过调整圆点数量、间... 点击进入详情页
本回答由东莞大凡提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式