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

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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值