目标:在一个单文本MFC程序中,创建一个SHAPE基类,派生LINE,RECTANGLE,ELLIPSE类用于画图,在VIEW类的ONDRAW函数中用自己创建的类画图。
问
题:我创建好了4个类,想在类中获得设备上下文来画图(比如在line 类中创建一个CDC*
pDC来画图),但在自己类中pDC=GetDC()要参数,我该怎么填参数?(我试过将pDC设为公有,在view类中用pLine->
pDC=this->GetDC();编译不会出错,但运行时会出错)我该怎么在自己的类中获得程序的设备上下文?
PS:是否有其它的方法使我可以在自己的类中画图,并在VIEW类的ONDRAW()函数中用自己创建的类画图?
一个关于MFC中用自己创建的类画图的问题
答案:3 悬赏:70
解决时间 2021-02-17 08:09
- 提问者网友:wodetian
- 2021-02-16 10:07
最佳答案
- 二级知识专家网友:强势废物
- 2021-02-16 11:18
你的图形应该是存储在CView中的,比如CView有个成员CShape* m_shape; 然后再CView中调用shape的Draw函数,Draw函数有个CDC*的参数,m_shape->Draw(CDC* pDC),所以只要在CView中获取CDC在作为参数传给Draw函数就可以了,CView中直接GetDC就可以了
全部回答
- 1楼网友:专属的偏见
- 2021-02-16 14:32
你的意思具体是什么?
是新建一个类操作画图软件还是新建一个类,可以用代码渲染图形?
如果是前者,我不知道怎么做。
如果是后者,可以使用mfc自带的gdi,也可以使用dx。
使用gdi的话很简单:
1、在项目中引入gdi+的头文件,使用gdi+的命名空间。
2、初始化gdi+系统资源。
3、使用完毕后,释放gdi+所使用的资源。
4、在编译时加入gdiplus.lib链接库。
然后在在stdafx.h头文件里声明如下语句,就可以使用gdi绘图。
#pragma comment(lib,"gdiplus.lib")
#include
using namespace gdiplus;
- 2楼网友:山鬼偶尔也合群
- 2021-02-16 12:56
你的类可以增加一个CDC* m_pDC成员变量,用构造函数把m_DC=pDC嘛,其实在你的里里也可以获得pDC的好像是pDC=CDC::GetDC()把。你所说的运行出错那肯定是访问了空指针,你可以打断点调试 看哪个指针没有获得值。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯