C++/MFC-GDI绘图
来源:互联网 发布:哥萨克 知乎 编辑:程序博客网 时间:2024/04/29 05:37
一、了解GDI与GUI
GDI是Graphics Device Interface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。
在Windows操作系统下,绝大多数具备图形界面的应用程序都离不开GDI,我们利用GDI所提供的众多函数就可以方便的在屏幕、打印机及其它输出设备上输出图形,文本等操作。
GDI的出现使程序员无需要关心硬件设备及设备驱动,就可以将应用程序的输出转化为硬件设备上的输出,实现了程序开发者与硬件设备的隔离,大大方便了开发工作。
GDI:图形设备接口,包括了绘图的所有元素,例如画笔,画刷,线,点,矩形等所有和绘图有关的东西。这些都被MFC封装在CDC类中,这个类包含了所有的绘图函数。
GUI:图形用户接口,这个是 windows引进一个概念,指的是用户和计算机有一个操作界面,用户在这个界面上的操作都是可见的,不象DOS下只有输入命令,计算机执行。
区别:
GUI是程序人机界面,相对于DOS类的字符界面而言;
GDI是编程接口,通常所说的就是指Windows下的图形设备编程接口。
二、DC,HDC与CDC
DC设备环境(Device Context的缩写,设备描述表,设备上下文都是说的它)是Windows中的一种数据结构,
它包含GDI需要的所有关于显示界面情况的描述字段,包括相连的物理设备和各种各样的状态信息。
HDC是API里的一个数据类型,是DC的句柄。
CDC是MFC中对DC相关数据及函数的一个封装的类。
HDC与CDC的关系 就如同HWND与CWnd的关系;
三、绘制矩形
3.1API 绘制
BOOL Rectangle(HDC hdc, // 设备描述表句柄 (指定一个用于绘图的地方)
int nLeftRect, / /矩形的左上角X坐标
int nTopRect, //矩形的左上角Y坐标
int nRightRect, //矩形的右下角X坐标
int nBottomRect //矩形的左下角Y坐标
);
HDC GetDC( //针对客户区
HWND hWnd // handle to a window
);
HDC GetWindowDC( //包含非客户区(标题栏以及菜单栏工具栏)
HWND hWnd // handle of window
);
3.2CDC类绘制
CDC::Rectangle //类成员函数BOOL Rectangle( int x1, int y1, int x2, int y2 );
BOOL Rectangle( LPCRECT lpRect );
CDC获取
CWnd::GetDC
CDC* GetDC( );
CWnd::GetWindowDC
CDC* GetWindowDC( );
3.3释放资源
用完后 记得释放掉 不然多占资源 而且容易出错
HWND hWnd, // 窗口句柄
HDC hDC // DC设备句柄
);四、在DC上绘制矩形代码测试
void CDialog_Thread_Priority_test::OnBnClickedButton4(){// TODO: 在此添加控件通知处理程序代码//API版本HDC dc=::GetDC(m_hWnd);//获取DC//HDC dc=::GetWindowDC(m_hWnd);//包含非客户区(标题栏以及菜单栏工具栏)::Rectangle(dc,1,1,101,21);//绘制一个矩形::ReleaseDC(m_hWnd,dc); //释放掉DC//CDC版本 //CDC* pdc=GetDC();//CWnd//pdc->Rectangle(1,1,101,21);//ReleaseDC(pdc); }如果当窗口位置发生变动时,绘制的图形消失,可以查看窗口的WM_PAINT消息。
五、其余屏幕绘图函数
VS2010/MFC编程入门之四十九(图形图像:CDC类及其屏幕绘图函数)
阅读全文
0 0
- C++/MFC-GDI绘图
- C++/MFC-GDI绘图之CBrush画刷
- C++/MFC-GDI绘图之CBitmap位图
- MFC GDI绘图基础
- MFC中的GDI绘图
- MFC GDI绘图基础
- MFC中的GDI绘图
- MFC GDI+ 绘图
- MFC GDI绘图基础
- MFC中的GDI绘图
- MFC中的GDI绘图
- MFC中的GDI绘图
- MFC GDI绘图
- MFC GDI绘图
- MFC中的GDI绘图
- MFC GDI绘图基础
- MFC中GDI绘图
- MFC GDI绘图基础
- 数据结构实验之栈三:后缀式求值
- mysql备份
- 枚举范例
- java编写多个入参
- caffe模型
- C++/MFC-GDI绘图
- hyperledger fabric v1.0安装测试(ubuntu)
- 【算法题】跳石板
- Spring和Hibernate使用maven整合时pom.xml的配置
- 0x0FDFE224 (ucrtbased.dll)处(位于.exe 中)引发的异常: 0xC0000005: 写入位置 0x01100000 时发生访问冲突。 如有适用于此异常的处
- 什么是成员函数
- USACO-Section1.2 Palindromic Squares [回文数][进制转换]
- 初遇单例模式之双重检测
- 解决问题E: 无法获得锁 /var/lib/dpkg/lock