MFC画图 画圆
请问MFC中画一个圆,调用Ellipse函数,但我想把这个圆保存成一个对象或变量,之后对这个对象操作,比如填充、移动变大变小等等,就是想问一下我怎么能把这个圆保存成一个“...
请问MFC中画一个圆,调用Ellipse函数,但我想把这个圆保存成一个对象或变量,之后对这个对象操作,比如填充、移动变大变小等等,就是想问一下我怎么能把这个圆保存成一个“圆类”的对象呢
展开
展开全部
这个我做过,要知道,一个圆的大小,颜色,底色等都是这个圆的属性,必须得当做一个类来看待
你至少要建一个圆或图形的类吧~ 比如添加一个类
Class Graph,添加成员变量 CPoint m_ptStart(鼠标按下坐标)CPoint m_ptEnd(鼠标弹开坐标),COLORREF linecolor(圆线条的颜色) COLORREF setcolor(填充线条的颜色)
等等,
考虑到图形重绘的问题,你还得在你的Doc或View中添加一个容器,存放这些图形的对象(其实是对象的地址),在每次重绘的时候才能把一个个包含属性的图形再次画在窗口上,详细的东西很复杂,而且类的思想也不是一时半会能够掌握的。
建议你去看孙鑫VC++的视频,第10课讲怎么画图,第11课讲怎么保存,很有用
你至少要建一个圆或图形的类吧~ 比如添加一个类
Class Graph,添加成员变量 CPoint m_ptStart(鼠标按下坐标)CPoint m_ptEnd(鼠标弹开坐标),COLORREF linecolor(圆线条的颜色) COLORREF setcolor(填充线条的颜色)
等等,
考虑到图形重绘的问题,你还得在你的Doc或View中添加一个容器,存放这些图形的对象(其实是对象的地址),在每次重绘的时候才能把一个个包含属性的图形再次画在窗口上,详细的东西很复杂,而且类的思想也不是一时半会能够掌握的。
建议你去看孙鑫VC++的视频,第10课讲怎么画图,第11课讲怎么保存,很有用
展开全部
建个线程画
你可以写个专门画圆的函数:
void draw_circle(HWND hwnd, /* 其他画圆需要的参数 */)
{
HDC hdc = GetDC(hwnd);
// 画圆
ReleaseDC(hdc);
}
想同时画的话,比如有2个窗口,主窗口假设为hwnd1,另一个为hwnd2,这样:
CreateThread(draw_circle, /* hwnd2和其他传给draw_circle的参数,多的你可以作为数组传指针过去 */)
{
}
然后再再主线程里调用draw_circle(hwnd1, ...);
你可以写个专门画圆的函数:
void draw_circle(HWND hwnd, /* 其他画圆需要的参数 */)
{
HDC hdc = GetDC(hwnd);
// 画圆
ReleaseDC(hdc);
}
想同时画的话,比如有2个窗口,主窗口假设为hwnd1,另一个为hwnd2,这样:
CreateThread(draw_circle, /* hwnd2和其他传给draw_circle的参数,多的你可以作为数组传指针过去 */)
{
}
然后再再主线程里调用draw_circle(hwnd1, ...);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不过非要建也可以,你自己建一个圆类,这个圆类派生余CDC类,然后就可以对他进行你说的操作了。详细的灾区看下CDC类,还不会留言给我,我给你写代码吧!不过可能无法很快回!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-11-20
展开全部
你去看一下 《深入浅出MFC》 相关内容 要用到 CDocument 和 DocTemplate
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
定义一个圆类
里面有填充 移动等功能
重载吧
里面有填充 移动等功能
重载吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询