徐桥图片:急:MFC交互画出多边形后怎样用刷子填充?
来源:百度文库 编辑:高校问答 时间:2024/08/30 11:28:12
这样的
多边形是交互式画出的 鼠标左键单击为起点 起点用CPoint类定义StartPoint
起点坐标StartPoint.x,StartPoint.y
鼠标右键单击为多边形终点 终点定义为LastPoint
右键单击后线自动连接起点和终点(MoveTo和LineTo)
可以画出任意多边形
上述功能已经实现
问题:怎样用画刷填充上述自定义的多边形&&怎样用*号或者#号填充
或者用字符串填充
自己定义一个fill()函数,这个fill里面的代码应该怎么写?
希望能给出fill()源码
还有个小要求就是右键单击完成多边形绘制后自动填充多边形
如果我说的不够详细,请指出,我一定补充上来
非常感谢!!!
多边形是交互式画出的 鼠标左键单击为起点 起点用CPoint类定义StartPoint
起点坐标StartPoint.x,StartPoint.y
鼠标右键单击为多边形终点 终点定义为LastPoint
右键单击后线自动连接起点和终点(MoveTo和LineTo)
可以画出任意多边形
上述功能已经实现
问题:怎样用画刷填充上述自定义的多边形&&怎样用*号或者#号填充
或者用字符串填充
自己定义一个fill()函数,这个fill里面的代码应该怎么写?
希望能给出fill()源码
还有个小要求就是右键单击完成多边形绘制后自动填充多边形
如果我说的不够详细,请指出,我一定补充上来
非常感谢!!!
可以在过程中先用MoveTo,LineTo,并记下鼠标单击的各点,鼠标右击后清除以上线条,选入画刷并用Polygon重画。比如:
在视图类中
#include <afxtempl.h>
CArray<CPoint,CPoint>*myArray;//存储坐标点
构造函数中初始化
myArray=new CArray<CPoint,CPoint>;
鼠标左击时
myArray->Add(point);
右击时
int nSize=myArray->GetSize();
CPoint *pt=new CPoint[nSize];
for(int i=0;i<nSize;i++)
{
pt[i]=myArray->GetAt(i);
}
CClientDC dc(this);
CBrush brush(RGB(0,255,0)),*pOldBrush;//以绿画刷为例
pOldBrush=dc.SelectObject(&brush);
dc.Polygon(pt,nSize);
myArray->RemoveAll();
delete pt;
dc.SelectObject(pOldBrush);
经调试无误
用MoveTo和LineTo画出的图形看似封闭的,其实不是,其实是一根根的直线。DC会用默认的Brush填充封闭区域,不信你用Rectangle或Ellipse试试。画封闭多边形用Polygan(好像是这样写的,查查MSDN)