.NET登录win8.1开始界面背景景

客服组热线:028-
退票组热线:028-15
出票组热线:028-15
加盟组热线:028-
团队部电话:028-03
信息单保险领取:028-8557375
国际客服:028-45
工作时间:7x24小时x365天在线
Copyright(c) 2006 天马航空 All rights reserved. 蜀ICP备号
建议使用 IE 7.0 或 NETSCAPE 4.0以上版本进行浏览,最佳显示14888人阅读
本系列主要讲解界面编程,目前列出五篇,欢迎大家交流讨论。1. 《》2. 《》3. 《》4. 《》5. 《》&Windows界面编程第一篇 位图背景与位图画刷&&& 可以通过消息来设置对话框的背景,上对这个消息的说明如下: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表示对话框的设备上下方即,lParam表示对话框的句柄。如果程序处理了这个消息,应返回一个画刷。系统将会用这个画刷来重绘对话框背景。因此我们在这个消息中得到对话框的大小,并通过函数将位图缩放后贴到对话框的中就完成了对话框背景的设置,然后返回一个空画刷给系统,这样系统就不会将位图背景给覆盖了。代码非常简单,要注意的是在使用函数缩放位图时,最好先使用函数来设置下位图内容伸展模式,这样可以避免缩放后位图失真严重。函数原型如下:SetStretchBltMode(HDChdc,&&&&&&&&&& // handle to DCint iStretchMode&& // bitmap stretching mode第一个参数就是设备上下方即。第二个参数有四种设置: or STRETCH_ANDSCANS如果两个或多个像素得合并成一个像素,那么会对像素执行一个逻辑运算。这样的结果是只有全部的原始像素是白色时该像素才为白色,其实际意义是黑色像素控制了白色像素。这适用于白色背景中主要是黑色的单色点阵图。 or STRETCH_ORSCANS如果两个或多个像素得合并成一个像素,那么会对像素执行逻辑运算。这样的结果是只有全部的原始像素都是黑色时该像素才为黑色,也就是说由白色像素决定颜色。这适用于黑色背景中主要是白色的单色点阵图。 or STRETCH_DELETESCANS简单地消除图素行或列,而没有任何逻辑组合。这是通常是处理彩色点阵图的最佳方法。 or STRETCH_HALFTONE根据组合起来的来源颜色来计算目的的平均颜色。其它技术细节可以见代码中的注释,完整代码如下(也可以下载,下载地址为:):// 对话框位图背景 &- WM_CTLCOLORDLG中使用StretchBlt贴图
//By MoreWindows-(http://blog.csdn.net/MoreWindows)
#include &windows.h&
#include &resource.h&
const char szDlgTitle[] = &位图背景 使用StretchBlt贴图 MoreWindows-(http://blog.csdn.net/MoreWindows)&;
// 对话框消息处理函数
BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
lpCmdLine,
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc);
BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
static BITMAP s_
static HDC
switch (message)
case WM_INITDIALOG:
// 设置对话框标题
SetWindowText(hDlg, szDlgTitle);
// 设置对话框大小可调节
SetWindowLong(hDlg, GWL_STYLE, GetWindowLong(hDlg, GWL_STYLE) | WS_SIZEBOX);
// 加载背影图片
hBitmap = (HBITMAP)LoadImage(NULL, &005.bmp&, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
if (hBitmap == NULL)
MessageBox(hDlg, &LoadImage failed&, &Error&, MB_ICONERROR);
// 将背影图片放入HDC - s_hdcMem
hdc = GetDC(hDlg);
s_hdcMem = CreateCompatibleDC(hdc);
SelectObject(s_hdcMem, hBitmap);
ReleaseDC(hDlg, hdc);
// 得到位图信息
GetObject(hBitmap, sizeof(s_bm), &s_bm);
case WM_COMMAND:
switch (LOWORD(wParam))
case IDCANCEL:
DeleteDC(s_hdcMem);
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
case WM_SIZE:
InvalidateRect(hDlg, NULL, TRUE);
return TRUE;
case WM_CTLCOLORDLG:
GetClientRect(hDlg, &rcDialog);
//通过SetStretchBltMode的设置能使StretchBlt在缩放图像更加清晰
SetStretchBltMode((HDC)wParam, COLORONCOLOR);
StretchBlt((HDC)wParam, 0, 0, rcDialog.right, rcDialog.bottom, s_hdcMem, 0, 0, s_bm.bmWidth, s_bm.bmHeight, SRCCOPY);
return (BOOL)((HBRUSH)GetStockObject(NULL_BRUSH));
return FALSE;
}运行结果如下:在上面这种方法中,我们是在中贴图来完成背景设置了,也可以创建一个位图画刷,然后在消息中直接返回这个画刷,这样系统将完成贴图功能。位图画刷的创建函数为,其函数原型如下:CreatePatternBrush(HBITMAPhbmp&& // handle to bitmap只要给这个函数传入位图句柄即可,完整代码如下(下载地址为:):// 对话框位图背景 - 直接在WM_CTLCOLORDLG中使用位图画刷
//By MoreWindows-(http://blog.csdn.net/MoreWindows)
#include &windows.h&
#include &resource.h&
const char szDlgTitle[] = &位图画刷 MoreWindows-(http://blog.csdn.net/MoreWindows)&;
// 对话框消息处理函数
BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
lpCmdLine,
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc);
BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
static HBRUSH
s_hBitmapB //位图画刷
switch (message)
case WM_INITDIALOG:
// 设置对话框标题
SetWindowText(hDlg, szDlgTitle);
// 设置对话框大小可调节
SetWindowLong(hDlg, GWL_STYLE, GetWindowLong(hDlg, GWL_STYLE) | WS_SIZEBOX);
// 加载背影图片
HBITMAP hB
hBitmap = (HBITMAP)LoadImage(NULL, &005.bmp&, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
if (hBitmap == NULL)
MessageBox(hDlg, &LoadImage failed&, &Error&, MB_ICONERROR);
// 创建位图画刷
s_hBitmapBrush = CreatePatternBrush(hBitmap);
case WM_COMMAND:
switch (LOWORD(wParam))
case IDCANCEL:
DeleteObject(s_hBitmapBrush);
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
case WM_CTLCOLORDLG:
return (BOOL)s_hBitmapB
return FALSE;
}运行结果如下:注意,这两做法在窗口大小超过位图大小时会表现不同,前一种做法会拉伸位图以适应窗口大小,后一种做法是直接平铺。详见下图:&本篇《》主要介绍了通过消息来设置对话框的背景,在系统中还有类似于消息的还有,,,,这五种来分别管理按钮,编辑框,列表框,滚动条,静态框。有兴趣的读者可以试验下。下一篇将介绍调节窗体透明度的方法,欢迎继续浏览《》&&当窗口的背景用彩色图片来装饰时,其它控件如果还是用灰色的背景会显的比较不谐调,《》将介绍如何为静态框设置透明背景。&&本文配套程序下载地址为:转载请标明出处,原文地址:欢迎关注微博:
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2830639次
积分:23918
积分:23918
排名:第86名
原创:155篇
评论:4006条
文章:17篇
阅读:669244
文章:15篇
阅读:655607
文章:130篇
阅读:2596232
文章:11篇
阅读:243810用户名:密码:平滑渐显更换窗口背景 - 下载频道
- CSDN.NET
&&&&平滑渐显更换窗口背景
平滑渐显更换窗口背景
最近在改进一个以前写的程序,涉及的界面的优化,受到win7更换桌面背景时的那种效果的启发,于是决定在自己的程序中做一个类似的背景切换功能以增强用户体验。其实要实现这个功能挺简单的,我得思路是这样的:在更换背景的时候,为主窗口创建一个一模一样的子窗口将主窗口完全覆盖,此时先更换主窗口的背景(主窗口被子窗口遮蔽,此时并看不到主窗口的变化),然后将子窗口渐渐透明掉,这时主窗口便逐渐浮现出来。
在主窗口的左上角,我做了一个切换背景实现响应区域,当鼠标进入该区域时,左上角便会缓缓的显示下一张壁纸的局部(左上角的三角形区域),点击一下便响应切换背景。
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行}

我要回帖

更多关于 win8.1开始界面背景 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信