OnPaint 说明
CWnd::OnPaint
afx_msg void OnPaint( );
说明:
当Windows或应用程序请求重画应用程序窗口的一部分时,框架调用这个成员函数。WM_PAINT在调用UpdateWindow或RedrawWindow成员函数时发出。当设置了RDW_INTERNALPAINT标志并调用RedrawWindow成员函数时,窗口可能会接收到内部重画消息。在这种情况下,窗口可能没有更新区域。应用程序必须调用GetUpdateRect成员函数以确定窗口是否具有更新区域。如果GetUpdateRect返回0,则应用程序不应调用BeginPaint和EndPaint成员函数。
应用程序负责检查是否需要内部重画或更新,这可通过查看每条WM_PAINT消息的内部数据结构来完成,因为一条WM_PAINT可能是由于一个无效区域或由于使用RDW_INTERNALPAINT标志调用了RedrawWindow成员函数而引起的。
Windows只发送一次内部WM_PAINT消息。在通过UpdateWindow成员函数向窗口发送了内部WM_PAINT消息以后,将不会再向窗口发送其它WM_PAINT消息,直到再次使用RDW_INTERNALPAINT标志调用了RedrawWindow成员函数
CPaintDC
CPaintDC类是一个来自CDC的设备环境类。它在构造期间执行CWnd::BeginPaint,在析构期间执行CWnd::EndPaint。
一个CPaintDC对象只在响应一个WM_PAINT消息的时候被使用,通常是在你的OnPaint消息处理成员函数中。
#include <afxwin.h>
举个例子
void CmessageDlg::OnPaint()
{
//画到当前窗口
CPaintDC dc(this);
//画文字
dc.TextOutW(100, 100, TEXT("不忘初心 牢记使命"));
//画园
dc.Ellipse(100, 100, 300, 300);
}
CPaintDC 的一些方法
GetBkColor 获取当前背景色
SetBkColor 设置当前背景色
GetBkMode 获取背景模式
SetBkMode 设置背景模式
GetPolyFillMode 获取当前多边形填充模式
SetPolyFillMode 设置多边形填充模式
GetROP2 获取当前绘图模式
SetROP2 设置当前绘图模式
GetStretchBltMode 获取当前位图拉伸模式
SetStretchBltMode 设置位图拉伸模式
GetTextColor 获取当前文本颜色
SetTextColor 设置文本颜色
GetColorAdjustment 获取用于设备上下文的颜色调整值
SetColorAdjustment 使用指定值设置设备上下文的颜色调整值
GetMapMode 获取当前映射模式
SetMapMode 设置当前映射模式
GetViewportOrg 获取视区起点的X和Y坐标
SetViewportOrg 设置视区起点
OffsetViewportOrg 相对于当前视区起点坐标修改视区起点
GetViewportExt 获取视区X和Y范围
SetViewportExt 设置视区X和Y范围
ScaleViewportExt 相对于当前值修改视区范围
GetWindowOrg 获取参应窗口起点的X和Y坐标
SetWindowOrg 设置设备上下文的窗口起点
OffsetWindowOrg 相对于当前窗口起点的坐标修改窗口起点
GetWindowExt 获取对应窗口的X和Y坐标
SetWindowExt 设置对应窗口的X和Y坐标
ScaleWindowExt 相对于当前值修改窗口范围
DPtoHIMETRIC 设备单位转换为HIMETRIC单位
LPtoHIMETRIC 逻辑单位转换为HIMETRIC单位
DPtoLP 设备单位转换为逻辑单位
LPtoDP 逻辑单位转换为设备单位
HIMETRICtoDPHIMETRIC 单位转换为设备单位
HIMETRICtoLPHIMETRIC 单位转换为逻辑单位
FillRect 用指定画刷填充给定矩形
FrameRect 在矩形周围绘制边界
InvertRect 反转矩形内容
DrawIcon 绘制图标
DrawDragRect 拖拽矩形时擦除并重绘它
FillSolidRect 用实颜色填充矩形
Draw3Drect 绘制三维矩形
DrawEdge 绘制矩形边
DrawFrameControl 绘制帧控件
DrawState 显示图像并应用可视化效果来表示一个状态
Chord 绘制椭圆弧(椭圆和一条线段相交围成的闭合图形)
DrawFocusRect 绘制用于表示焦点的风格的矩形
Ellipse 绘制椭圆
Pie 绘制饼形图
Polygon 绘制多边形,包含由线段连接的一个或多个点(顶点)
PolyPolygon 创建使用当前多边形填充模式的两个或多个多边形,多边形可以相互分开或叠加
Polyline 绘制多边形,包含连接指定点的一组线段
Rectangle 使用当前笔绘制矩形,用当前画刷填充
RoundRect 使用当前笔绘制圆角矩形,用当前画刷填充
TextOut 用当前选取字体在指定位置写字符串
ExtTextOut 用当前选取字体在矩形区域写字符串
TabbedTextOut 在指定位置写字符串,制表符扩展为制表符停止位置数组中指定值
DrawText 在指定矩形内绘制格式化文本
GetTextExtent 使用当前字体在属性设备上下文上计算文本行的宽度和高度,确定维数
GetOutputTextExtent 使用当前字体在输出设备上下文上计算文本行的宽度和高度,确定维数
GetTabbedTextExtent 使用当前字体在属性设备上下文上计算字符串的宽度和高度
GetOutputTabbedTextExtent 使用当前字体在输出设备上下文上计算字符串的宽度和高度
GrayString 在给定位置绘制暗(灰色)文本
GetTextAlign 获取文本对齐标记
SetTextAlign 设置文本对齐标记
GetTextFace 以空终止字符串形式把当前字体字样名拷贝到缓冲区
GetTextMetrics 从属性设备上下文为当前字体获取度量
GetOutputTextMetrics 从输出设备上下文为当前字体获取度量
SetTextJustification 把空格添加到字符串的中断字符
GetTextCharacterExtra 对字符间空格数量获取当前设置
SetTextCharacterExtra 设置字符间空格数量