借鉴 GDI+ 使用 StretchDIBits 进行缩放的图形对象位图
我正在使用 DrawImage 方法在图形对象上绘制位图图像,但图像数量很大,因此绘制需要花费太多时间。 我在这个论坛上读到,使用 StretchDIBits 可以减少绘图时间。 我通过调用 Drawimage 来缩放图像,但我想要任何其他有效的方法。 我有一个位图* & 向量 我想在图形上绘制每个位图。
HDC orghDC = graphics.GetHDC();
CDC *dc = CDC::FromHandle(orghDC);
m_vImgFrames 是包含 Bitmap* 的图像向量。 我从 Bitmap*
获取了 HBITMAP。
HBITMAP hBitmap;
m_vImgFrames[0]->GetHBITMAP(Color(255,0,0),&hBitmap);
使用这个 HBITMAP 我想在 orghDC & 上绘制 最后在图形上。 所以我想知道如何使用 StretchDIBits 缩放位图并最终在图形对象上绘制。
我是这个论坛的新手。任何想法或代码都会有帮助
I am drawing bitmap images on graphics object using DrawImage method But the Images are in large number so it is taking too much time for Drawing. I have read in this forum that using StretchDIBits takes less time for Drawing.
I am scaling the image by calling Drawimage but i want any other efficent method.
I have a Vector of Bitmap* & i want to draw each Bitmap on graphics.
HDC orghDC = graphics.GetHDC();
CDC *dc = CDC::FromHandle(orghDC);
m_vImgFrames is image vector containg Bitmap*
. I have taken HBITMAP from Bitmap*
.
HBITMAP hBitmap;
m_vImgFrames[0]->GetHBITMAP(Color(255,0,0),&hBitmap);
Using this HBITMAP i want to draw on orghDC & finally on graphics. So I want to know how StretchDIBits can be used for scaling the Bitmap and finally draw on Graphics Object.
I am new to this forum.Any ideas or code can be helpful
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为什么不直接使用 GDI+ API 来缩放位图,而不是使用 StretchDIBits?:
Instead of using StretchDIBits, why not use the GDI+ API directly to scale the bitmap?:
要将
StretchDIBits
与Gdiplus::Bitmap
一起使用,您可以执行以下操作:但这在我的机器上看起来并不比简单的
Graphics::DrawImage
快多少代码>.To use
StretchDIBits
withGdiplus::Bitmap
you could do the following:But this doesn't looks much faster on my machine than simple
Graphics::DrawImage
.