X--F 2022-01-14 01:49 采纳率: 0%
浏览 18

俩个内存DC间不能互相拷贝吗?

我想把位图缩小到按钮上,想法是先用StrerchBlt缩小到一个中间DC,然后再把中间DC输出到按钮上,结果一片空白,什么也没有
然后无意间直接把位图DC输出到按钮,结果好了
这是为什么呢?我的理解是HDC是一块画布的代号,StretchBlt是将另一块画布内容缩放后复制到另一个画布,BitBlt是将一个画布内容原封不动复制到另一个画布上
刚学这些,有点迷糊。

case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hwnd, &ps);
            HDC hdcMen = CreateCompatibleDC(hdc);
            HDC hdcSca = CreateCompatibleDC(hdc);
            BITMAP bmp;

            GetObject(hbitmap, sizeof(BITMAP), &bmp);
            SelectObject(hdcMen, hbitmap);
            //1.
            {
                StretchBlt(hdcSca, 0, 0, 500, 300,
                    hdcMen, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
                BitBlt(hdc, 0, 0, 50, 30, hdcSca, 0, 0, SRCCOPY);
            }
            //2.
            {
                StretchBlt(hdc, 0, 0, 500, 300,
                hdcMen, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
            }

            ReleaseDC(hwnd, hdc);
            DeleteDC(hdcMen);
            DeleteDC(hdcSca);
    
            EndPaint(hwnd, &ps);
            return 0;
        }
  • 写回答

2条回答 默认 最新

  • 马里亚纳海沟网 2022-01-14 05:31
    关注

    不能

    评论

报告相同问题?

问题事件

  • 创建了问题 1月14日