
SetBkMode
SetBkMode,Windows API,设定指定DC的背景混合模式,背景混合模式用于与文本,填充画刷和当画笔不是实线时。
基本介绍
- 中文名:SetBkMode
- 外文名:SetBkMode
- 声明位置:WinGDI.h
- 静态库:Gdi32.lib
- 动态库:Gdi32.dll
基本概述
函式功能
设定指定DC的背景混合模式,背景混合模式用于与文本,填充画刷和当画笔不是实线时。
函式原型
//Windows API 中的函式原型int SetBkMode( _In_ HDC hdc, _In_ int iBkMode);//MFC 中封装的函式原型int CDC::SetBkMode(int mode);
参数
HDC hdc; //当前 DC ( device context ) 的句柄int mode; //要设定的模式,其值可以为 OPAQUE 或 TRANSPARENT
返回值
如果函式运行成功,返回当前DC之前的背景模式;如果函式运行失败,返回零。
实例
void OnPaint(HDC hdc){ int mode = SetBkMode(hdc, TRANSPARENT);//设定为透明模式 RECT rect = { 0, 0, 200, 50 }; //在矩形中心绘製文字 DrawText(hdc, _T("Hello World"), -1, &rect, DT_VCENTER | DT_CENTER | DT_SINGLELINE); SetBkMode(hdc, mode);//还原为之前的模式, 这里不是必须的}
其他说明
输出的字元串时,发现输出字元串的背景色不同于控制项的颜色,这样的输出是破坏背景的。那需要使用什幺方法来保持背景不变,而又能输出红色的字元串呢?比如按钮的文字颜色是黑色的,而背景是灰色的。这就需要使用SetBkMode函式来设定DrawText函式的输出方式,显示设备共有两种输出方式:OPAQUE和TRANSPARENT。OPAQUE的方式是用当前背景的画刷的颜色输出显示文字的背景,而TRANSPARENT是使用透明的输出,也就是文字的背景是不改变的。
对透明的理解:在窗体或控制项输出的字元串或图形是有背景色的。而窗体或控制项也是有背景色的。这两种背景色一般是不同的, 这样输出图形或字元串时,两种背景(窗体或控制项的背景色、符串或图形的背景色)重叠在一起了,影响美观,为了不让这两种背景重叠,可以设定背景模式为TRANSPARENT(透明的),即让输出的字元串或图形的背景色不可见。可以这样理解:把输出的字元串或图形的背景色看成是一物体,窗体或控制项看成另一物体,字元串或图形在窗体或控制项前面挡住窗体或控制项了(因为输出 的字元串或图形是画在窗体或控制项上的,所以可以这幺类比),但是透过字元串或图形能看到窗体或控制项。即字元串或图形的背 景色所代表的物体是透明的。
相关函式
SetBkColor,SetBkMode,SetTextColor,DrawText