1、关于颜色:
/*
1、字体的点值 = tmHeight字段-tmInternalLeading字段,与字体字母的实际大小并不正好相等;
2、字体的字母大小由「点」表示。1点大约1/72英寸,在计算机排版中1点正好为1/72英寸。
3、小于10点的字体不益于长时间阅读。
4、视频图素大小-固定假设为10点字体和12点行距。(96或120dpi)
*/
逻辑宽度(mm):25.4*(垂直解析度(图素)/逻辑图素X(每英寸的点数))
逻辑高度(mm):25.4*(垂直解析度(图素)/逻辑图素Y(每英寸的点数))
[Full-Color]: 视讯显示器的分辨率是每个图素24位-8位红色、8位绿色以及8位蓝色。
[High-Color]: 显示分辨率是每个图素16位-5位红色、6位绿色以及5位蓝色。
/*呼叫传回色彩平面的数目*/
iPlanes = GetDeviceCaps(hdc,PLANES);
/*呼叫传回每个图素的色彩位数*/
iBitsPixel = GetDeviceCaps(hdc,BITSPIXEL);
/*显示卡能够表示的色彩数*/
iColors = 1 << (iPlanes * iBitsPixel) ;
与下面得到的值可能一样或不同
iColors = GetDeviceCaps(hdc,NUMCOLORS) ;
/*原因:不用这个值,因为GetDeviceCaps传回由Windows保留的色彩数,值为20,
剩余的236种颜色可以由Windows程序用调色盘管理器设定。*/
/*RGB色彩,其中‘\’表示续行符*/
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r) | \
((WORD)((BYTE)(g)) << 8)) | \
(((DWORD)(BYTE)(b)) << 16)))
RGB(255,255,0)//三个参数顺序是红绿蓝,三值为0时为黑,255时为白。
/*[混色]:模拟设备能够显示的颜色之外的色彩*/
cpPureColor = GetNearestColor(hdc,crColor);
/*设备内容属性,程序可以改变或者取得任何一种属性.*/
设备内容属性 默认值 修改该值的函数 取得该值的函数
Mapping Mode MM_TEXT SetMapMode GetMapMode
Window Origin (0, 0) SetWindowOrgEx GetWindowOrgEx
OffsetWindowOrgEx
Viewport Origin (0, 0) SetViewportOrgEx GetViewportOrgEx
OffsetViewportOrgEx
Window Extents (1, 1) SetWindowExtEx
SetMapMode GetWindowExtEx
ScaleWindowExtEx
Viewport Extents (1, 1) SetViewportExtEx
SetMapMode GetViewportExtEx
ScaleViewportExtEx
Pen BLACK_PEN SelectObject SelectObject
Brush WHITE_BRUSH SelectObject SelectObject
Font SYSTEM_FONT SelectObject SelectObject
Bitmap None SelectObject SelectObject
Current Position (0, 0) MoveToEx
LineTo GetCurrentPositionEx
PolylineTo
PolyBezierTo
Background Mode OPAQUE SetBkMode GetBkMode
Background Color White SetBkColor GetBkColor
Text Color Black SetTextColor GetTextColor
Drawing Mode R2_COPYPEN SetROP2 GetROP2
Stretching Mode BLACKONWHITE SetStretchBltMode GetStretchBltMode
Polygon Fill Mode ALTERNATE SetPolyFillMode GetPolyFillMode
Intercharacter Spacing 0 SetTextCharacterExtra GetTextCharacterExtra
Brush Origin (0, 0) SetBrushOrgEx GetBrushOrgEx
SelectObject
SelectClipRgn
IntersectClipRgn
Clipping Region None OffsetClipRgn GetClipBox
ExcludeClipRect
SelectClipPath
2、保存设备内容:
/*初始化设备内容:非内定的设备内容属性*/
case WM_PAINT:
hdc = BeginPaint(hwnd,&ps);
设备内容属性
绘制窗口显示区域
EndPaint(hwnd,&ps);
return 0;
/*将CS_OWNDC旗标纳入窗口类别:每个窗口都将拥有自己的设备内容*/
wndclass.style = CS_HREDRAW|CS_VREDRAW|CS_OWNDC;
/*使用CS_OWNDC风格,就只需初始化设备内容一次,可以在处理WM_CREATE消息处理期间完成这一操作*/
case WM_CREATE:
hdc = GetDC(hwnd);
初始化设备内容属性
ReleaseDC(hwnd,hdc);
/*使用了CS_OWNDC,您仍然应该在退出窗口消息处理程序之前释放设备内容。
CS_OWNDC风格只影响GetDC和BeginPaint获得的设备内容,
不影响其它函数(如GetWindowDC)获得的设备内容。*/
/*保存设备内容*/
idSaved = SaveDC(hdc)
/*回到呼叫SaveDC前存在的设备内容*/
RestoreDC (hdc, idSaved) ;
如,将设备内容恢复到最近由SaveDC函数保存的状态中.
RestoreDC (hdc, -1);