中易网

一个关于MFC中用自己创建的类画图的问题

答案:3  悬赏:70  
解决时间 2021-02-17 08:09
目标:在一个单文本MFC程序中,创建一个SHAPE基类,派生LINE,RECTANGLE,ELLIPSE类用于画图,在VIEW类的ONDRAW函数中用自己创建的类画图。

题:我创建好了4个类,想在类中获得设备上下文来画图(比如在line 类中创建一个CDC*
pDC来画图),但在自己类中pDC=GetDC()要参数,我该怎么填参数?(我试过将pDC设为公有,在view类中用pLine->
pDC=this->GetDC();编译不会出错,但运行时会出错)我该怎么在自己的类中获得程序的设备上下文?
PS:是否有其它的方法使我可以在自己的类中画图,并在VIEW类的ONDRAW()函数中用自己创建的类画图?
最佳答案
你的图形应该是存储在CView中的,比如CView有个成员CShape* m_shape; 然后再CView中调用shape的Draw函数,Draw函数有个CDC*的参数,m_shape->Draw(CDC* pDC),所以只要在CView中获取CDC在作为参数传给Draw函数就可以了,CView中直接GetDC就可以了
全部回答
你的意思具体是什么? 是新建一个类操作画图软件还是新建一个类,可以用代码渲染图形? 如果是前者,我不知道怎么做。 如果是后者,可以使用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;
你的类可以增加一个CDC* m_pDC成员变量,用构造函数把m_DC=pDC嘛,其实在你的里里也可以获得pDC的好像是pDC=CDC::GetDC()把。你所说的运行出错那肯定是访问了空指针,你可以打断点调试 看哪个指针没有获得值。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
梦见特别想见的人,但在梦里对自己很凶是什么
浦东新区投资促进服务办公室地址在哪,我要去
连云港市交通工程有限公司怎么去啊,有知道地
钠,氢,氧,硫,相互反应的方程【单质与酸】
农场知青和下乡知青有什么不同
两条直线被第三条直线所截,如果同位角相等,那
秋子+落叶的图,猜一成语
鑫翔宇装饰材料商行这个地址在什么地方,我要
林家下口二村在什么地方啊,我要过去处理事情
乱斗西游2哪个人物厉害 DPS英雄推荐
龙潭森林公园怎么样
介绍一个做微商的女孩简历
久裕商贸城(东门)地址在什么地方,想过去办事
短文走进书里去作者的观点是哪句,你怎么理解
阳美玉都我想知道这个在什么地方
推荐资讯
江门汽车总站的电话号码
留胃村在哪里啊,我有事要去这个地方
昔日街头问子平,老道说我一身穷 什么意思
别人说她的产品是功效性产品该怎么回答
1升co2与1升氦气哪个重
女士钻戒1克拉的价格是多少
家庭V网套餐包是什么
已知物体运动规律s=t+t²米,当t=2秒的瞬
沈阳站的210路公交车车站现在在哪?(车站那
火车飞机票地址在什么地方,想过去办事
水里的什么动物最凶猛
成人缺钾是怎么造成的
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?