【问题标题】:Why the Bitblt cannot work为什么 Bitblt 不能工作
【发布时间】:2011-07-27 08:54:10
【问题描述】:
>   case WM_PAINT:          
                      {
>               hdc = BeginPaint(hWnd, &ps);
>               // TODO: Add any drawing code here...
>               RECT rt;
>               GetClientRect(hWnd, &rt);
>               HDC myHdc = CreateCompatibleDC(hdc);
>               
>               DrawText(myHdc, szHello, strlen(szHello), &rt, DT_CENTER);
>               BitBlt(hdc,0,0,rt.right-rt.left,rt.bottom-rt.top,myHdc,0,0,SRCCOPY);
>               
>               EndPaint(hWnd, &ps);            
                        }
> 
>           break;

为什么文本不能在窗口显示?

【问题讨论】:

    标签: windows gdi bitblt


    【解决方案1】:

    您需要创建 BITMAP 并在您的 DC 中选择它:

    RECT rt;
    GetClientRect(hWnd, &rt);
    HDC myHdc = CreateCompatibleDC(hdc);
    
    CBitmap bitmap = CreateCompatibleBitmap(hdc, width, height);
    HBITMAP oldBitmap = ::SelectObject(myHdc, bitmap);
    
    DrawText(myHdc, szHello, strlen(szHello), &rt, DT_CENTER);
    BitBlt(hdc,0,0,rt.right-rt.left,rt.bottom-rt.top,myHdc,0,0,SRCCOPY);
    
    ::SelectObject(myHdc, oldBitmap);
    
    EndPaint(hWnd, &ps);  
    

    【讨论】:

    • 对。当您使用 CreateCompatibleDC 时,我认为选择到 DC 中的位图是 1x1 1 位位图,不是很有用。
    猜你喜欢
    • 2023-03-09
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 2012-01-15
    • 2016-07-16
    相关资源
    最近更新 更多