Windows面编程-背景图片、透明特效使用.docxVIP

  • 1
  • 0
  • 约3.89万字
  • 约 47页
  • 2017-05-15 发布于贵州
  • 举报

Windows面编程-背景图片、透明特效使用.docx

Windows面编程-背景图片、透明特效使用

Windows界面编程第一篇 位图背景与位图画刷 ??? 可以通过WM_CTLCOLORDLG消息来设置对话框的背景,MSDN上对这个消息的说明如下: The?WM_CTLCOLORDLG?message is sent to a dialog box before the system draws the dialog box. By responding to this message, the dialog box can set its text and background colors using the specified display device context handle. 当窗口消息响应函数接收这个消息时,wParam表示对话框的设备上下方即HDC,lParam表示对话框的句柄。如果程序处理了这个消息,应返回一个画刷。系统将会用这个画刷来重绘对话框背景。 因此我们在这个WM_CTLCOLORDLG消息中得到对话框的大小,并通过StretchBlt函数将位图缩放后贴到对话框的HDC中就完成了对话框背景的设置,然后返回一个空画刷给系统,这样系统就不会将位图背景给覆盖了。 代码非常简单,要注意的是在使用StretchBlt函数缩放位图时,最好先使用 SetStretchBltMode函数来设置下位图内容伸展模式,这样可以避免缩放后位图失真严重。SetStretchBltMode函数原型如下: int?SetStretchBltMode( ????HDChdc,???????????// handle to DC ??? int?iStretchMode???// bitmap stretching mode ); 第一个参数就是设备上下方即HDC。 第二个参数有四种设置: 1.?BLACKONWHITE?or?STRETCH_ANDSCANS ?如果两个或多个像素得合并成一个像素,那么StretchBlt会对像素执行一个逻辑AND运算。这样的结果是只有全部的原始像素是白色时该像素才为白色,其实际意义是黑色像素控制了白色像素。这适用于白色背景中主要是黑色的单色点阵图。 2.?WHITEONBLACK?or?STRETCH_ORSCANS ?如果两个或多个像素得合并成一个像素,那么StretchBlt会对像素执行逻辑OR运算。这样的结果是只有全部的原始像素都是黑色时该像素才为黑色,也就是说由白色像素决定颜色。这适用于黑色背景中主要是白色的单色点阵图。 3.?COLORONCOLOR?or?STRETCH_DELETESCANS ?简单地消除图素行或列,而没有任何逻辑组合。这是通常是处理彩色点阵图的最佳方法。 4.?HALFTONE?or?STRETCH_HALFTONE 根据组合起来的来源颜色来计算目的的平均颜色。 ? 其它技术细节可以见代码中的注释,完整代码如下(也可以下载,下载地址为: HYPERLINK /download/morewindows/4947377 /download/morewindows/4947377): [cpp]? HYPERLINK /morewindows/article/details/8451629 \o view plain view plain HYPERLINK /morewindows/article/details/8451629 \o copy copy HYPERLINK /morewindows/article/details/8451629 \o print print HYPERLINK /morewindows/article/details/8451629 \o ? ? //?对话框位图背景??-?WM_CTLCOLORDLG中使用StretchBlt贴图??? //By?MoreWindows-(/MoreWindows)??? #include?windows.h??? #include?resource.h??? ?? const?char?szDlgTitle[]?=?位图背景?使用StretchBlt贴图?MoreWindows-(/MoreWindows);?? ?? //?对话框消息处理函数??? BOOL?CALLBACK?DlgProc(HWND?hDlg,?UINT?message,?WPARAM?wParam,?LPARAM?lParam);?? ???????????? int?APIENTRY?WinMain(HINSTANCE?hInstance,?? ?????????????????????HINSTANCE?hPrevInstance,?? ?????????????????????LP

文档评论(0)

1亿VIP精品文档

相关文档