标题:TransparentBlt函数调用来贴图透明显示没有效果怎么办?图片大小是LoadImag ...
只看楼主
情绪小妖精
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-6-4
 问题点数:0 回复次数:1 
TransparentBlt函数调用来贴图透明显示没有效果怎么办?图片大小是LoadImage中的大小
程序代码:
//初始化
BOOL Game_Init(HWND hwnd)
{
    g_hdc = GetDC(hwnd);
    g_hBackGround = (HBITMAP)LoadImage(NULL, L"bg.bmp", IMAGE_BITMAP, WINDOW_WIDTH, WINDOW_HEIGHT, LR_LOADFROMFILE);
    g_hSprite1 = (HBITMAP)LoadImage(NULL, L"character1.bmp", IMAGE_BITMAP, 535, 650, LR_LOADFROMFILE);
    g_hSprite2 = (HBITMAP)LoadImage(NULL, L"character2.bmp", IMAGE_BITMAP, 506, 650, LR_LOADFROMFILE);
    g_mdc = CreateCompatibleDC(g_hdc);
    Game_Paint(hwnd);
    ReleaseDC(hwnd, g_hdc);
    return TRUE;
}

//在函数中进行绘制操作
VOID Game_Paint(HWND hwnd)
{
    SelectObject(g_mdc, g_hBackGround);
    BitBlt(g_hdc, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, g_mdc, 0, 0, SRCCOPY);
    SelectObject(g_mdc, g_hSprite1);
    TransparentBlt(g_hdc, 0, WINDOW_HEIGHT - 650, 535, 650, g_mdc, 0, 0, 535, 650, RGB(0, 0, 0));//设置RGB(0, 0, 0)为透明色
    
    SelectObject(g_mdc, g_hSprite2);
    TransparentBlt(g_hdc, 500, WINDOW_HEIGHT - 650, 506, 650, g_mdc, 0, 0, 506, 650, RGB(0, 0, 0));
}

//资源清理函数
BOOL Game_CleanUp(HWND hwnd)
{
    DeleteObject(g_hBackGround);
    DeleteObject(g_hSprite1);
    DeleteObject(g_hSprite2);
    DeleteDC(g_mdc);
    return TRUE;
}
搜索更多相关主题的帖子: 函数 透明 大小 HWND RGB 
2018-06-04 15:15
情绪小妖精
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-6-4
得分:0 
用三缓冲技术解决了,虽然没人,但还是谢谢大家了!
2018-06-04 15:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-487595-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.845741 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved