VC++鼠标响应画圆的问题

在窗口每点击一次鼠标左键画一个圆OnLButtonDown里应该加什么C***View里应该加什么OnDraw里应该加什么越详细越好!!... 在窗口每点击一次鼠标左键画一个圆
OnLButtonDown里应该加什么
C***View里应该加什么
OnDraw里应该加什么
越详细越好!!
展开
 我来答
很会搞笑
2008-02-27 · TA获得超过179个赞
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:0
展开全部
如果只是在view中画圆,只需要在OnLButtonDown中添加就可以了,比如:
void CMyStatusBarView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CDC *pdc = GetDC();
pdc->Ellipse(CRect(point.x - 10, point.y - 10, point.x + 10, point.y + 10)); //10是你要画的圆的半径

CView::OnLButtonDown(nFlags, point);
}

这种做法最小化窗口,或是变化大小后图像会消失,因为在view的onpaint或是别的函数中重画了,但没有画先前的圆。如果要想在变化窗口之后还看到圆,必须把之前画的保存起来,然后在onpaint或是ondraw中依次画出来就ok了。
Kumbayaco
2008-02-27
知道答主
回答量:31
采纳率:0%
帮助的人:0
展开全部
在OnLButtonDown里加上

CDC *pDC(this);
pDC->Ellipse();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdhover
2008-02-27 · TA获得超过236个赞
知道答主
回答量:119
采纳率:0%
帮助的人:0
展开全部
如果需要窗口刷新时候都把圆画出来,需要如下处理:

1、在 C**View 里面增加一个结构用于保存圆的信息
struct Circle
{
int centerx, centery; //圆心位置
int radius; //圆半径
};
再增加一个数组或者 Vector 记录用于保存 所有圆的中心和半径 如果: std::vector<Circle> circles;

2、在 OnLButtonDown 里面将 圆心的位置(即鼠标的位置)和圆半径 保存到circles 中; circles.push();

3、在 OnDraw 里面,遍历circles,
CDC *pDC(this)
for(所有的圆)
{
pDC->Ellipse( ) //画每一个圆
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2008-02-27
展开全部
如果只是在view中画圆,只需要在OnLButtonDown中添加就可以了,比如:
void CMyStatusBarView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CDC *pdc = GetDC();
pdc->Ellipse(CRect(point.x - 10, point.y - 10, point.x + 10, point.y + 10)); //10是你要画的圆的半径

CView::OnLButtonDown(nFlags, point);
}
如果需要窗口刷新时候都把圆画出来,需要如下处理:

1、在 C**View 里面增加一个结构用于保存圆的信息
struct Circle
{
int centerx, centery; //圆心位置
int radius; //圆半径
};
再增加一个数组或者 Vector 记录用于保存 所有圆的中心和半径 如果: std::vector<Circle> circles;

2、在 OnLButtonDown 里面将 圆心的位置(即鼠标的位置)和圆半径 保存到circles 中; circles.push();

3、在 OnDraw 里面,遍历circles,
CDC *pDC(this)
for(所有的圆)
{
pDC->Ellipse( ) //画每一个圆
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzy9668
2008-02-27 · TA获得超过1319个赞
知道小有建树答主
回答量:485
采纳率:100%
帮助的人:0
展开全部
首先建立两个CPoint类型类全局变量pt1,pt2;
然后在OnLButtonDown 加入
pt1=point;//记录圆心

在OnLButtonUp加入
pt2=point;//记录圆周上一点
Invalidate();//重绘

在Ondraw 加入
double r;
r=sqrt(pow(pt1.x-pt2.x,2)+pow(pt1.y-pt2.y,2));//计算半径,文件前还要加入#include <math.h>
pDC->Ellipse(pt1.x-r,pt1.y-r,pt1.x+r,pt1.y+r);//画圆
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式