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);
}
谯春0GR
2017-10-22 · TA获得超过255个赞
知道小有建树答主
回答量:296
采纳率:0%
帮助的人:52.4万
展开全部
用vb可以做到的
追问
这个是我的一个大学实验,然而我是新手我一直理不清鼠位置的单击左键响应还有绘图怎么处理,怎么先后执行,你能不能教教我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式