更新时间:2015-12-25 15:03:12浏览次数:1+次
HBITMAP hBrush = LoadBitmap(g_hInstance,MAKEINTRESOURCE(IDB_BITMAP1));
然后我们用CreatePatternBrush函数创建一个图形画刷,这个函数需要的唯一一个参数就是位图的句柄,我们已经准备好了。创建好图形画刷后,该函数就返回一个画刷句柄,我们使用SelectObject选入设备描述表,这样我们填充区域的时候就是用刚才创建的图形画刷了。代码如下:SelectObject(hdc,CreatePatternBrush(hBrush));
为了让图形充满整个客户区,所以用GetClientRect获取客户区大小,然后调用Rectangle函数画矩形。画完之后,记得删除自己创建的画刷,这是一个好习惯。这个程序当然无关紧要,好的习惯总会在关键时刻发挥重要的作用哦。下面就是用美女图片创建的画刷:
下面就是用圣诞红苹果图片创建的画刷:
#include "windows.h"
#include "resource.h"
#include <tchar.h>
// - 项目是Unicode字符集
HINSTANCE g_hInstance=NULL;
LRESULT CALLBACK WinProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
TCHAR Info[100]=_T("【C++技术网http://www.cjjjs.com】背景透明模式");
switch (message)
{
case WM_PAINT:
{
hdc = BeginPaint(hwnd,&ps);
HBITMAP hBrush = LoadBitmap(g_hInstance,MAKEINTRESOURCE(IDB_BITMAP1));//加载位图
SelectObject(hdc,CreatePatternBrush(hBrush));//创建并选择画刷
RECT rect;
GetClientRect(hwnd,&rect);//获得客户区大小
Rectangle(hdc,rect.left,rect.top,rect.right,rect.bottom);//绘制矩形,并用位图画刷填充矩形
DeleteObject(SelectObject(hdc,GetStockObject(WHITE_BRUSH)));//删除画刷
EndPaint(hwnd,&ps);
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrev,LPSTR lpCmd,int iShow)
{
TCHAR ClassName[] = _T("MyClass");
TCHAR title1[] = _T("C++技术网http://www.cjjjs.com");
WNDCLASS wndClass;
wndClass.cbClsExtra=0;
wndClass.cbWndExtra=0;
wndClass.hbrBackground= (HBRUSH)GetStockObject(LTGRAY_BRUSH);
wndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndClass.hInstance = hInstance;
wndClass.lpfnWndProc = WinProc;
wndClass.lpszClassName = ClassName;
wndClass.lpszMenuName=NULL;
wndClass.style=CS_HREDRAW|CS_VREDRAW;
if(!RegisterClass(&wndClass)) return 0;
g_hInstance = hInstance;
HWND hwnd = CreateWindow(ClassName,title1,WS_OVERLAPPEDWINDOW,0,0,440,440,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
MSG msg;
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
相关资讯