VC++编写一个窗口,根据鼠标所在位置的不同,单击左键时响应不同的绘图
创建一个Windows应用程序。可实现以下功能:当在客户区内的四个不同位置单击鼠标时,会出现不同颜色的矩形、圆角矩形、椭圆形和多边形。显示结果如下图所示(颜色和显示区域可...
创建一个Windows应用程序。可实现以下功能:当在客户区内的四个不同位置单击鼠标时,会出现不同颜色的矩形、圆角矩形、椭圆形和多边形。显示结果如下图所示(颜色和显示区域可自己设置,映射模式设置为默认的模式)。
展开
2017-10-22
展开全部
void CXXXDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
COLORREF color=RGB(rand()%255,rand()%255,rand()%255);
CDC* dc=GetDC();
CPen pen(PS_SOLID,1,color);
int r=rand()%80+10;
CBrush brush(color);
dc->SelectObject(brush);
dc->SelectObject(pen);
CPoint pt[15];
int type=rand()%6;
int df;
switch(type)
{
case 0:
dc->Ellipse(point.x-r,point.y-r,point.x+r,point.y+r);
break;
case 1:
dc->Rectangle(point.x-r,point.y-r,point.x+r,point.y+r);
break;
case 2:
dc->RoundRect(point.x-r,point.y-r,point.x+r,point.y+r,20,20);
break;
case 3:
case 4:
case 5:
df=rand()%7+3;
for(int i=0;i<df;i++)
{
pt[i].x=point.x+(int)((float)r*cos((i-90)*3.1415926/((float)df/2.0)));
pt[i].y=point.y+(int)((float)r*sin((i-90)*3.1415926/((float)df/2.0)));
}
CRgn hrgn;
dc->BeginPath();
dc->MoveTo(pt[0]);
for(i=0;i<df-1;i++)
{
dc->LineTo(pt[i+1]);
}
dc->LineTo(pt[0]);
dc->CloseFigure();
dc->EndPath();
hrgn.CreateFromPath(dc);
dc->FillRgn(&hrgn,&brush);
}
CDialog::OnLButtonDown(nFlags, point);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询