|
VC++ 特效混合 显示动画,动画图片为一张张BMP黑色背景图片
以下是使用一系列带有黑色背景的BMP图像显示特效动画的VC++代码示例。该代码假设您有一系列命名为"frame1.bmp"、"frame2.bmp"等的BMP图像,并希望在窗口中显示它们。代码使用GDI函数来加载和显示BMP图像,以创建连续循环的动画效果。
- #include <windows.h>
- LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- switch (message)
- {
- case WM_PAINT:
- {
- PAINTSTRUCT ps;
- HDC hdc = BeginPaint(hWnd, &ps);
- HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, L"frame1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
- HDC hdcMem = CreateCompatibleDC(hdc);
- HBITMAP hBitmapOld = (HBITMAP)SelectObject(hdcMem, hBitmap);
- BitBlt(hdc, 0, 0, 800, 600, hdcMem, 0, 0, SRCCOPY);
- SelectObject(hdcMem, hBitmapOld);
- DeleteDC(hdcMem);
- DeleteObject(hBitmap);
- EndPaint(hWnd, &ps);
- break;
- }
- case WM_CLOSE:
- DestroyWindow(hWnd);
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- return 0;
- }
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
- {
- WNDCLASS wc = {0};
- wc.lpfnWndProc = WndProc;
- wc.hInstance = hInstance;
- wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
- wc.lpszClassName = L"AnimationWindowClass";
- RegisterClass(&wc);
- HWND hWnd = CreateWindow(L"AnimationWindowClass", L"Animation Window", WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, hInstance, NULL);
- ShowWindow(hWnd, nCmdShow);
- UpdateWindow(hWnd);
- MSG msg;
- while (GetMessage(&msg, NULL, 0, 0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- return msg.wParam;
- }
复制代码
在这段代码中:
- 处理 `WM_PAINT` 消息以加载并在窗口客户区域显示BMP图像"frame1.bmp"。
- 使用 `LoadImage` 函数加载BMP图像,并使用 `BitBlt` 函数显示图像。
- 使用 `BLACK_BRUSH` 库存对象将窗口背景设置为黑色。
您可以扩展此代码以循环加载和显示一系列BMP图像,以创建动画效果。
|
|