MFC 应用程序中的 XY 位图
我正在使用一个已从 Linux 移植到 Windows 的库。 该库用于读取地形数据库,到目前为止,它已用于简单的查询; 但它也能够创建我想利用的底层地形文件的位图...我正在使用的函数说它创建了一个“XY 位图”然后可以传递给 XPutImage”。 我过去曾在 MFC 应用程序中显示图像,但无法使该特定位图正常工作。 有没有办法在 WIN32 应用程序中显示这样的位图? 或者可能是 XPutImage 函数的 WIN32 端口? 如果 Python 对这种图像类型有一定的支持,我什至愿意使用它。
I am using a library that has been ported to Windows from Linux. The library is used to read a terrain database and up to this point it has been used for simple queries; elevation, line-of-sight, etc. But it also has the ability to create bitmaps of the underlying terrain file that I'd like to take advantage of... The function I am using says it creates an "XY-Bitmap that can then be passed to XPutImage". I have displayed images in an MFC app in the past but I cannot get this specific bitmap to work. Is there a way to display such a bitmap in a WIN32 application? Or possible a WIN32 port of the XPutImage function? I'd even be willing to used Python if it has some support for this image type.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
XY 位图的位深度为 1 位。 您可以尝试使用位深度为 1 像素的 CreateBitmap(),使用 GetDIBits() 获取指向原始像素数据的指针,并使用 memcpy() 将 XY 位图复制到像素数据上。 我不确定行/列顺序是否相同。
如果这不起作用,很容易编写一个函数来扫描 XY 位图并将值复制到您使用 CreateBitmap() 创建的位图中 - 无论是具有 1 位深度还是更高深度的位图,我认为取决于您正在使用的其余位图。 方法是相同的 - 使用 GetDIBits() 获取原始位图数据,完成复制后将位图选择到 DC,使用 BitBlt()、StretchBlt() 或 AlphaBlend() 将位图显示到您的油漆直流。
An XY-bitmap has a bit depth of 1 bit. What you could try is use CreateBitmap() with a bit depth of 1 pixel, use GetDIBits() to get a pointer to the raw pixel data and copy the XY-bitmap over the pixel data with memcpy(). I'm not sure the row/col order is the same though.
If that doesn't work, it's easy to write a function that will scan the XY-bitmap and copy the values into a bitmap that you've created with CreateBitmap() - be it one with a 1-bit depth or a higher depth, depending on the rest of the bitmaps you're working with I presume. The method would be the same - use GetDIBits() to get to the raw bitmap data, select the bitmap into a DC when you're done copying, use BitBlt(), StretchBlt() or AlphaBlend() to display the bitmap onto your paint DC.