如何在c++ mfc的基于对话框中画填充矩形
这时画矩形是用Rectangle函数吧?不过Rectangle函数是BOOL类型的怎么用呢?我知道如果是填充矩形是用CBrush类,但这里还用CPenPen吗?还有程序没...
这时画矩形是用Rectangle函数吧?不过Rectangle函数是BOOL类型的怎么用呢?我知道如果是填充矩形是用CBrush类,但这里还用CPen Pen吗?还有程序没错误但出不来矩形是怎么回事?是Rectangle函数还要加点什么才能出图形吗?(我的对话框里没有添加控件)
展开
2个回答
展开全部
FillRect 才是填充矩形。。。 你屌错函数了,而且该函数是API函数,并不是MFC框架的写法。。。MFC应该用。
CDC.FillRect 这样的形式才是标准的MFC方式,即使用CDC对象来画图。。。 如果你用了API就不能用 C开头的对象,
因为API不是MFC框架内容,它是GDI的函数,必须用句柄做参数。。。 这个一定要搞清楚。。。
还有 MFC基于的图形库GDI已经是个老掉牙过时的图形框架,用不着深究, MFC是可以用GDI+。。。。效果强出GDI 应该有10倍吧,你只需要添加
#include <gdiplus.h>
using namespace Gdiplus;
并在初始化程序时调用 GdiplusStartup函数初始化GDI+即可轻松使用。。
使用GDI+之后你就完全不用理会什么CBrush 这些老套的东西了,你唯一要做的是把绘图用的 HDC句柄用于创建GDI+所用的Graphics对象就行(用途相当于CDC),之后就不用理会CDC中使用的绘图对象了。。。
当然虽然GDI+也是做界面中过时的东西了,但效果还是很强的,绝对和GDI有明显不一样的感觉,各种比较闪亮的画刷,比如各种渐近色画刷,图片按一定角度旋转,双缓冲功能(更新时画面防闪屏用),曲线斜线是抗锯齿的(更逼真),和其他新增绘图对象,用起来方便,效果强。。。。。
当然GDI+其实也是被微软淘汰的,但起码比GDI相比高出好几个档次,其他还有OpenGL ,DirectX等,就超级炫酷了,现在的比较炫酷的界面都是用这些,因为他们实际是3D图形引擎,原本是用来开发游戏的,但由于现在显卡越来越屌,没必要用GDI这种主要靠CPU完成绘图的图形库了,既影响速度又不美观。。。
常规APP开发,其实GDI+就够用了,而且可以轻松上手,和GDI很相似,但功能更强,更好用,而其他的就是另一个世界了,想会用需要下写功夫了。。。
CDC.FillRect 这样的形式才是标准的MFC方式,即使用CDC对象来画图。。。 如果你用了API就不能用 C开头的对象,
因为API不是MFC框架内容,它是GDI的函数,必须用句柄做参数。。。 这个一定要搞清楚。。。
还有 MFC基于的图形库GDI已经是个老掉牙过时的图形框架,用不着深究, MFC是可以用GDI+。。。。效果强出GDI 应该有10倍吧,你只需要添加
#include <gdiplus.h>
using namespace Gdiplus;
并在初始化程序时调用 GdiplusStartup函数初始化GDI+即可轻松使用。。
使用GDI+之后你就完全不用理会什么CBrush 这些老套的东西了,你唯一要做的是把绘图用的 HDC句柄用于创建GDI+所用的Graphics对象就行(用途相当于CDC),之后就不用理会CDC中使用的绘图对象了。。。
当然虽然GDI+也是做界面中过时的东西了,但效果还是很强的,绝对和GDI有明显不一样的感觉,各种比较闪亮的画刷,比如各种渐近色画刷,图片按一定角度旋转,双缓冲功能(更新时画面防闪屏用),曲线斜线是抗锯齿的(更逼真),和其他新增绘图对象,用起来方便,效果强。。。。。
当然GDI+其实也是被微软淘汰的,但起码比GDI相比高出好几个档次,其他还有OpenGL ,DirectX等,就超级炫酷了,现在的比较炫酷的界面都是用这些,因为他们实际是3D图形引擎,原本是用来开发游戏的,但由于现在显卡越来越屌,没必要用GDI这种主要靠CPU完成绘图的图形库了,既影响速度又不美观。。。
常规APP开发,其实GDI+就够用了,而且可以轻松上手,和GDI很相似,但功能更强,更好用,而其他的就是另一个世界了,想会用需要下写功夫了。。。
展开全部
首先,打开IDE,本人用的是VS2005(英文版),然后点file,new一个project,选Visual C++目录下面的MFC,然后选中旁边Templates里的MFC Application,再在下面的name栏里给你的工程取个名字,比如叫Test,最后点OK。
进入下一界面后会有一些关于当前工程的设置,在Application type中选dialog based,直接finish.
这样一个基于对话框的MFC简单工程就建成了。
然后再TestDlg.cpp里找到void CtestDlg::OnPaint(),在else里的CDialog::OnPaint();后面写
CClientDC dc(this);//选定当前画图环境
CPen pen(PS_SOLID,1,#ff0000);//做一支红色粗细为1的笔
dc.SelectObject(&pen);//将pen放到dc上
dc.Rectangle(100,100,200,200);//画一个矩形
完成!
进入下一界面后会有一些关于当前工程的设置,在Application type中选dialog based,直接finish.
这样一个基于对话框的MFC简单工程就建成了。
然后再TestDlg.cpp里找到void CtestDlg::OnPaint(),在else里的CDialog::OnPaint();后面写
CClientDC dc(this);//选定当前画图环境
CPen pen(PS_SOLID,1,#ff0000);//做一支红色粗细为1的笔
dc.SelectObject(&pen);//将pen放到dc上
dc.Rectangle(100,100,200,200);//画一个矩形
完成!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询