SetDIBitsToDevice、StretchDIBits、VB6
我曾经很擅长这些事情,但那是很久以前的事了!
我有一个工作正常的图像采集卡示例程序,它使用这一行(在其他一些东西之后)在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试在 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