MFC 多边形 填充颜色问题

nurdan 2008-12-01 09:22:00
画出一个多变行 然后多边形填充颜色
画出多变行的部分写好了 但是 填充颜色的部分写不出来 大侠们帮忙
void CMy3060646009SX3Dlg::OnButton1()
{
CDC*pDC=m_pic.GetDC();

CRect rect=FindRect();

for(int y=rect.top;y<rect.bottom;y++)
{
for(int x=rect.left;x<rect.right;x++)
{
if(IsInSide(x,y)==TRUE)
pDC->SetPixel(x,y,fillColor);
}
}
}
上面的代码里面的IsInSide(x,y) 这个函数就是 点是不是在多边形内
bool CMy3060646009SX3Dlg::IsInSide(int x, int y)
{
int i=0,x1,x2,n=0;
for(i=0;i<num;i++)
{
if(i<num-1)
{
for(x1=ptlist[i].x;x1<ptlist[i+1].x;x1++) //ptlist[20]是多边形顶点坐标数组 这2个顶点连接
{
for(x2=x;x2<=rect.left;x2++)
if(x1==x2)
n++; //n 点x,y 屏幕水平映射线 与 多边形的交点
}
}
}
if(n==1 || n==3 || n==5) //如果交点为奇数 那么点在多边形内
return TRUE;
else
return FALSE;
}
这样写的 但还是 没反应 大侠们帮忙哪里错了
...全文
424 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lygfqy 2008-12-02
  • 打赏
  • 举报
回复
http://www.programfan.com/blog/article.asp?id=5357
貌似这里有你想要的
Show_Mike 2008-12-02
  • 打赏
  • 举报
回复
可以考虑采用计算几何的方法,确定多边形区域并填充不同颜色.
ToperRay 2008-12-02
  • 打赏
  • 举报
回复
这个问题比较复杂,你得研究多边形的相交情况,
大概要超过10种以上的情况你得考虑。

而且必须保证多边形的点线等的排序。
m_nNightmire 2008-12-02
  • 打赏
  • 举报
回复
SetPixel的速度太慢了
FillRgn吧...
momomowere 2008-12-02
  • 打赏
  • 举报
回复
ok
nurdan 2008-12-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lizhigang34 的回复:]
呵呵..楼主进"死胡同"了,居然一个像素一个像素的填充,试试楼上的方法吧
[/Quote]
因为老师的要求是那样的~~~没办法 ...
lizhigang34 2008-12-02
  • 打赏
  • 举报
回复
呵呵..楼主进"死胡同"了,居然一个像素一个像素的填充,试试楼上的方法吧
Tinary3v0 2008-12-02
  • 打赏
  • 举报
回复
多边形填充? 要用CRgn类啊!

CRgn hRgn; 
pdc->BeginPath();
pdc->MoveTo(Dot1);
pdc->LineTo(Dot2);
pdc->LineTo(Dot3);
pdc->LineTo(Dot4);
pdc->LineTo(Dot5);
pdc->CloseFigure();
pdc->EndPath();
hRgn.CreateFromPath(pdc);
TextRgn.CopyRgn(&hRgn);


然后使用pdc->FillRgn()填充!
nurdan 2008-12-01
  • 打赏
  • 举报
回复
顶~~~~~

19,468

社区成员

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

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