MFC学习笔记——GDI绘图
来源:互联网 发布:人工智能 时时彩 编辑:程序博客网 时间:2024/06/05 13:33
MFC学习笔记——GDI绘图
一、GDI绘图技术简介:
GDI(Geaphics Device Interface)图形设备接口,也是API应用程序编程接口的一种
它是专门负责窗口显示以及绘制图形的编程接口,包括显示器和打印机上显示图形
二、绘图专用句柄HDC
HWND和HDC是Windows中最常用的句柄之一
HDC(Handle of DC)设备环境句柄,专门用于绘图的句柄,被MFC封装咋CDC类中
DC(Device Context)翻译为:设备上下文,设备环境以及设备描述表等。在windows操作系统中,通过对驱动程序统一管理,讲设备接口细节隐藏于操作系统内部。程序员在编写图形程序时,只需要调用一个公共的虚拟设备即可,这个虚拟设备环境也就是DC.
三、通过HDC句柄绘图有三种方式: 标准客户区绘图、临时客户区绘图和非客户区绘图
a)标准客户区绘图:
必须是在WM_PAINt消息回调时才能执行,调用BeginPaint函数获取标准客户区绘图句柄,最后调用EndPaint函数释放
b)临时客户区绘图:
在任何消息回调时都可以执行,调用GetDC函数获取临时客户区绘图句柄进行绘图,最后调用RealeaseDC进行释放
c)非客户区绘图:
必须在WM_NCPAINT消息回调时才能执行,调用GetWindowDC函数获取非客户区绘图句柄进行绘图,最后调用RealeaseDC释放
注:调用Invalidate函数强制客户区标准绘图更新,临时客户区的绘图会被强制清除
BOOL CALLBACK WinProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { switch(uMsg){ case WM_COMMAND: { case IDCANCEL: EndDialog(hwndDlg,0); return TRUE; } //标准绘图case WM_PAINT: { PAINTSTRUCT ps; HDC hdc=BeginPaint(hwndDlg,&ps);//Rectangle(hdc,0,0,40,40); MoveToEx(hdc,20,20,NULL); LineTo(hdc,40,40); EndPaint(hwndDlg,&ps);// } return TRUE; //临时客户区绘图case WM_LBUTTONDOWN: { int x=LOWORD(lParam); int y=HIWORD(lParam); HDC hdc=::GetDC(hwndDlg);// Ellipse(hdc,x-10,y-10,x+10,y+10); ReleaseDC(hwndDlg,hdc);// } return TRUE; //非客户区绘图case WM_NCPAINT: HDC hdc=GetWindowDC(hwndDlg); RECT rect; GetWindowRect(hwndDlg,&rect); Rectangle(hdc,0,0,rect.right-rect.left,rect.bottom-rect.top); ReleaseDC(hwndDlg,hdc); return TRUE; } return FALSE; }
阅读全文
0 0
- MFC学习笔记——GDI绘图
- MFC——GDI+绘图
- C#学习笔记30——C# GDI+绘图
- MFC笔记 - GDI绘图和CDC类
- MFC笔记 - GDI绘图和CDC类
- MFC笔记 - GDI绘图和CDC类
- MFC绘图学习笔记
- MFC GDI绘图基础
- MFC中的GDI绘图
- MFC GDI绘图基础
- MFC中的GDI绘图
- MFC GDI+ 绘图
- MFC GDI绘图基础
- MFC中的GDI绘图
- MFC中的GDI绘图
- MFC中的GDI绘图
- MFC GDI绘图
- MFC GDI绘图
- libevent源码分析(6)--2.1.8--创建和释放libevent句柄event_base的相关函数
- 拉普拉斯矩阵到谱聚类
- JNI 实战全面解析
- 用openrowset函数操作远程数据库
- Unity中实现UI序列帧动画
- MFC学习笔记——GDI绘图
- React Native android 错误 com.atlassian.mobile.video:okhttp-ws-compat:3.7.0-atlassian1.
- Lua学习笔记(2)-语句、函数
- java web 项目启动的加载顺序
- Android Studio中使用jni进行opencv开发的环境配置
- UIBezierPath 了解
- [第十章]Python Request库的使用
- 数据库质疑或只有MDF文件资料
- 玲珑杯河南专场E