贴图就几步
1.创建DC句柄以及DC内存
2.loadimage
3.选择项目,绘图
写成代码就像这样:
PAINTSTRUCT ps;
HDC hdc,mdc;//创建DC句柄
HBITMAP hbmp;
mdc = CreateCompatibleDC(hdc);//创建DC内存
hbmp = (HBITMAP)LoadImage(NULL,path,IMAGE_BITMAP,200,200,LR_LOADFROMFILE);//loadimage到DC内存中
SelectObject(mdc, hbmp);//选择项目
BitBlt(hdc,0,0,200,200,mdc,0,0,SRCCOPY);//绘图
要注意使用的路径一定是'\\'注意是两个‘\',第一个'\'应该是转义符的意思
//以上是核心部分,也就是绘图应该有的几步。
//窗口建立之后,系统会调用重绘的部分,也就是WM_PAINT部分,我们就把代码写到这里面就OK。
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>
//1.设计一个窗口类
//2.注册窗口类
//3.创建窗口
//4.显示及更新窗口
//5.消息循环
//6.窗口函数
static TCHAR szWindowClass[] = _T("win32app");
static TCHAR szTitle[] = _T("测试程序");
HINSTANCE hInst;
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
//设计一个窗口类
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
hInst=hInstance;//hinstance赋值全局变量
//注册窗口类
if (!RegisterClassEx(&wcex))
{
MessageBox(NULL,_T("Call to RegisterClassEx failed!"),_T("Win32 Guided Tour"),NULL);
return 1;
}
//创建窗口
HWND hWnd = CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,1024, 768,NULL,NULL,hInstance,NULL);
//显示及更新窗口
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
//消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int) msg.wParam;
}
//消息处理函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);//开始绘图
/*--------------核心部分------------------*/
HDC mdc;
HBITMAP hbmp;
mdc = CreateCompatibleDC(hdc);
hbmp = (HBITMAP)LoadImage(NULL,TEXT("D:\\1.bmp"),IMAGE_BITMAP,200,200,LR_LOADFROMFILE);
SelectObject(mdc, hbmp);
BitBlt(hdc,0,0,200,200,mdc,0,0,SRCCOPY);
/*--------------核心部分------------------*/
DeleteObject(hbmp);
DeleteDC(mdc);//记得用完了删除
DCEndPaint(hWnd, &ps);//结束绘图
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
break;
}
}