gpt4 book ai didi

gdi - StretchDIBits 看起来很慢,有没有更快的 API?

转载 作者:行者123 更新时间:2023-12-03 04:57:24 25 4
gpt4 key购买 nike

我想在 HDC 上绘制一个相同大小的 dib。我在用 :des 和 src 大小相同。

   ::StretchDIBits(hdc,
des.left,des.top,des.right - des.left,des.bottom - des.top,
src.left, GetHeight() - src.bottom, src.right - src.left,src.bottom - src.top,
m_pImg->accessPixels(),m_pImg->getInfo(), DIB_RGB_COLORS, SRCCOPY);

但我发现它很慢,因为des大小是相同的,我只需要将dib复制到dc上。有没有比 StretchDIBits 更快的方法?

就像

StretchBlt (slow)  vs  Bitblt.(faster)
StretchDIBits (slow ) vs ?(faster)

最佳答案

除了处理拉伸(stretch)所需的通用性之外,速度差异还来自于进行任何必要的颜色转换(即使您的目标尺寸与源尺寸相同)。

如果您只绘制一次图像,那么我认为您正在寻找的函数是SetDIBitsToDevice

如果您因为多次绘制同一个 DIB 而关心速度,那么您可以通过将 DIB 复制到兼容的内存 DC 一次,然后从每次需要时将内存直流到屏幕(或打印机)。使用CreateCompatibleDC创建内存DC,然后使用StretchDIBitsSetDIBitsToDevice获取其上的图像。之后,您可以直接使用BitBlt。您还可以考虑使用DIBSECTION,它在真正的 DIB 和兼容的 DC 之间进行性能折衷。

关于gdi - StretchDIBits 看起来很慢,有没有更快的 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/856938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com