您的位置:首页 > 其它

第26周-window程序设计(基础篇)-第5章(图形基础)-关于颜色

2016-09-26 11:22 369 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: