MFC 应用程序中的 XY 位图

发布于 2024-07-24 04:52:11 字数 265 浏览 4 评论 0原文

我正在使用一个已从 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 技术交流群。

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

发布评论

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

评论(1

一身仙ぐ女味 2024-07-31 04:52:11

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.

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