SetDIBitsToDevice、StretchDIBits、VB6

发布于 2024-12-09 21:38:11 字数 509 浏览 0 评论 0原文

我曾经很擅长这些事情,但那是很久以前的事了!

我有一个工作正常的图像采集卡示例程序,它使用这一行(在其他一些东西之后)在 PictureBox 中显示图像:

SetDIBitsToDevice(Picture1.hdc, 0, 0, gSizeX, gSizeY, 0, 0, 0, gSizeY、gSurfAddr、bmpInfo、DIB_RGB_COLORS)

我想要做的就是更改此设置,以便我可以创建缩放图像。所以我将这一行更改为:

StretchDIBits(Picture1.hdc, 0, 0, w, h, 0, 0, gSizeX, gSizeY, gSurfAddr, bmpInfo, DIB_RGB_COLORS, vbSrcCopy) ..其中 w 和 h 是我想要的图像的尺寸(我最初尝试与 gSizeX/y 相同,大约 700 * 500)。

但我没有得到任何图像,有时只是白色,有时看起来像是未初始化的内存。

我犯了一个简单的错误还是我需要做更多的事情?

谢谢

I used to be good with these things but that was a long time ago!

I have a sample program for a frame grabber working fine, it uses this line (after some other stuff) to display the image in the PictureBox:

SetDIBitsToDevice(Picture1.hdc, 0, 0, gSizeX, gSizeY, 0, 0, 0, gSizeY, gSurfAddr, bmpInfo, DIB_RGB_COLORS)

All I want to do is to change this so I can create a scaled image. So I changed this line to:

StretchDIBits(Picture1.hdc, 0, 0, w, h, 0, 0, gSizeX, gSizeY, gSurfAddr, bmpInfo, DIB_RGB_COLORS, vbSrcCopy)
.. where w and h are the dimension of the image I want (I tried same as gSizeX/y at first, about 700 * 500).

But I get no image, sometimes just white, sometimes what looks like uninitialised memory.

Have I made a simple mistake or do I need to do more?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

哭泣的笑容 2024-12-16 21:38:11

尝试在 StretchDIBits 之前调用 SetStretchBltMode。有时,如果不使用 SetStretchBltMode,调整大小会出现错误。参数:COLORONCOLOR(快速调整大小)、HALFTONE(高质量调整大小)。

http://msdn.microsoft.com/en-我们/库/dd145089(v=vs.85).aspx

Try to call SetStretchBltMode before StretchDIBits. Sometimes resizing works incorrectly without SetStretchBltMode. Parameters: COLORONCOLOR (fast resizing), HALFTONE (high-quality resizing).

http://msdn.microsoft.com/en-us/library/dd145089(v=vs.85).aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文