问题标签 [hbitmap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1700 浏览

c++ - 将 PNG 加载代码转为使用 FILE 而不是本地资源

我正在开发一个小软件,旨在直接在桌面上显示 png 文件。我找到了一种使用 HBITMAP 结构来完成后面部分的方法。然而,到现在为止,我已经花了几天时间寻找一种将 .PNG 文件加载到这样的 HBITMAP 的方法。

我最终找到的代码(我也可以编译)是此页面中的代码:

http://logiklabs.tumblr.com/post/22946728048/how-to-load-an-image-resource-into-a-hbitmap

认为它会完美地工作。我的问题是虽然这个是为了使用已经附加的 .png 文件。

然而,我需要能够在运行时使用来自(在编译时)未知位置的文件。

那么我怎样才能改变那个脚本来实现呢?不幸的是,我的 C++ 知识不是最好的,这些相关函数的 MS 文档也没有真正的帮助:/

我会非常非常感谢!

0 投票
1 回答
4244 浏览

c++ - 将 HBITMAP 绘制到分层窗口上。怎么了?

大家好,美好的一天,

我的最终目标是在屏幕上绘制一个包含 alpha 的 PNG 文件——这意味着不是在自己的窗口中,而是在桌面上的某个地方。将 PNG 加载到 HBITMAP 中的部分现在可以工作(以不同的方式进行测试),但我无法将它包括 alpha 在内。

据我所知,最好的方法是使用分层窗户。所以我做了很多工作来重做几个例子和小教程。

以下代码编译没有问题并且没有提示任何消息(这意味着永远不会调用 showError("#") 函数)。

然而屏幕上没有任何可见的东西:/

抱歉,这么长...希望有人愿意至少快点看一下..

顺便说一句,如果我在 UpdateLayeredWindow 中使用 ULW_OPAQUE 而不是 ULW_ALPHA,则会出现一个大小合适的黑色窗口,因此认为问题必须是与 PAINTSTRUKT 或 BitBlt 函数相关的最小问题。但是我尝试了很多方法而没有任何改变.

希望有人可以提供帮助。非常感谢您!

0 投票
5 回答
13326 浏览

c++ - 正确关闭WinAPI HANDLEs(避免重复关闭)

我有一些手柄,我需要关闭它。代码中有一些地方可能会关闭句柄。那么,这是关闭句柄的正确方法吗?

关于位图句柄也有同样的问题:

编辑:我认为,有一些误解。我知道CloseHandle是为了关闭手柄。我想知道关闭手柄的正确方法。删除指针也会出现类似的情况。

因此,以下代码意味着问题:

这种情况有一些解决方法。我们需要像这样定义bar&duck函数:

所以我们避免重复删除 foo。问题是关闭句柄的正确方法是什么?我的意思是,如何避免重复关闭句柄问题?

0 投票
2 回答
3992 浏览

c++ - C++ 中没有 CImage 的 HBITMAP 到 JPEG/PNG

我有一个要保存到 JPEG/PNG 流或字节数组中的 HBITMAP。问题是我使用 mingw 作为我的编译器,所以我不能使用 CImage.. 这会让我的生活更轻松。

我可以毫无问题地从位图中获取像素,但我不知道如何以 JPEG/PNG 格式访问它们。

我从哪里开始?

0 投票
1 回答
846 浏览

c++ - 从分层窗口获取 HBITMAP - 不正确的数据

我创建了一个分层窗口(带有 WS_EX_LAYERED),大小约为 400X300 像素。
绘制窗口时(使用UpdateLayeredWindow)一切正常。

问题是绘制后我无法获取窗口的 HBITMAP。当试图通过窗口的 HDC 获取 HBITMAP 时,我得到一个空(黑色)位图,它是我整个桌面的大小(1920X1080 像素,400X300 像素)。

有人知道是否有可能获得分层窗口的 HDC\HBITMAP 吗?

代码示例

这是我如何绘制分层窗口的代码(同样,效果很好):

这是我如何捕获窗口的位图并将其保存到文件的代码:(注意:它适用于“普通”窗口,例如计算器)

谢谢!

0 投票
5 回答
23067 浏览

winapi - 从 HBITMAP 获取字节

如果给定 HBITMAP 指针,并且我的应用程序是控制台应用程序,如何从 hbitmap 获取图像字节。我尝试使用需要诸如 HDC 之类的参数的 GetDIBits,但我无法获得。

编辑:我从文件加载位图:

我将 HBITMAP 传递给函数并期望得到另一个处理图像的 HBITMAP:

其中 func 是:

问题是如何从 HBITMAP 获取图像字节。

0 投票
2 回答
19655 浏览

c++ - 从 Win32 项目中的 *.bmp 文件加载 HBITMAP

是否可以仅使用 WINAPI 函数将 *.bmp 文件加载到 Win32 项目中的 HBITMAP 中?

0 投票
3 回答
3506 浏览

c++ - 来自 HBITMAP 的 QImage

在我的纯 Windows 程序中,我使用了一个第三方库,它返回一个HBITMAP.

有没有办法QImage从其内容初始化 a ,即将其转换为 a QImage

0 投票
1 回答
964 浏览

c++ - 如何将位图数组从托管 C++ 传递到非托管 C++

System::Drawing::Bitmaps我目前在托管 C++ 代码中有一个 dll数组。我希望能够从非托管(本机)C++ 调用托管 C++ 中的方法。问题是如何将数组传递回非托管 C++?

我可以调用GetHbitmap()托管 C++ 位图,该位图返回IntPtr. 我应该传递一个 IntPtrs 数组吗?不太确定最好的方法来做到这一点。所以要清楚我有这个:

托管 C++ 方法:

是一个 HBITMAPS 数组吗?如果是这样,您如何将IntPtrhBmp 转换为该数组?

托管 C++ 代码运行良好,并且正确获取位图数组。但是现在当非托管 C++ 调用 GetBitmaps 方法时,我需要将这些位图返回到非托管 C++。我不知道我应该传入什么类型的变量,然后一旦我传入它,我该怎么做才能将它转换为非托管 C++ 可以使用的类型?

0 投票
1 回答
709 浏览

windows - 不使用 QPixmap 将 HBITMAP 转换为 QImage

我在辅助线程中从 Windows 中提取文件的缩略图,输出是 HBITMAP。现在我必须将其转换为 QImage 以将其发送回主线程。您可能已经知道,在非 gui 线程中使用 QPixmap 会导致运行时错误和编译时警告。我知道是因为我确实尝试过使用它,但它给了我随机错误。

任何想法,将不胜感激。