Visual C++ 绘制位图

绘制位图


位图从文件中加载到窗口的步骤:

1,加载位图 LoadImage

2,建立与窗口DC兼容的内存DC
CreateCompatibleDC ()建立内存DC
DeleteDC() 释放DC

3,选用位图对象

4,贴图
使用BitBlt 把内存DC中的位图复制到显示的DC上。


在VC++ 中新建win32程序,选择默认的生成框架。接下来只去修改和添加代码。

加入全局声明变量:

HBITMAP hbmp;// 位图对象
HDC mdc;// 用于保存位图的内存DC

在VC自动生成的代码中找到InitInstance()函数

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
	HWND hWnd;

	hInst = hInstance; // 将实例句柄存储在全局变量中
	HDC hdc;
	hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
	  CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

	if (!hWnd)
	{
	  return FALSE;
	}

	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);

	hdc = GetDC(hWnd);
	mdc = CreateCompatibleDC(hdc);

	hbmp = (HBITMAP)LoadImage(NULL, L"bg.bmp", IMAGE_BITMAP, 500, 500, LR_LOADFROMFILE);
	SelectObject(mdc, hbmp);//选择内存DC 位图对象
    BitBlt(hdc, 0, 0, 500, 500, mdc, 0, 0, SRCCOPY);
	/*表示从目标内存DC:mdc中的位图从(参数7,8)坐标0,0的地方开始复制500,500的区域*/
	ReleaseDC(hWnd, hdc);//释放内存DC

	return TRUE;
}
在WndProc函数中添加重绘消息

	case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		// TODO: 在此添加任意绘图代码...
		BitBlt(hdc, 0, 0, 500, 500, mdc, 0, 0, SRCCOPY);

		EndPaint(hWnd, &ps);
		break;


运行程序:




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值