问题标签 [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 回答
1491 浏览

c++ - MFC中创建DIBSection并使用图片控件进行渲染

我正在使用调用在 MFC 中创建一个 DIB 部分CreateDIBSection。我HBITMAP从调用中得到一个,我将它传递到我的 MFC 项目中的另一个对话框。在另一个对话框中,我使用CStatic::SetBitmap(HBITMAP)调用来渲染位图。但由于某种原因,我什么都看不到。如果这是在同一个对话框中完成的,这工作得很好,但我想在一个对话框中创建位图并在另一个对话框中显示。

创建 DIBSection 的代码是

请帮我解决一下这个。HBITMAPHandles的使用有什么限制吗?

0 投票
0 回答
662 浏览

c# - C# - 从原生 HBitmap 到 JPEG 编码流,透明和颠倒

我的最终目标是放置一个 HBitmap,我使用以下代码从 Windows 缩略图缓存中检索到它:

成 JPEG 编码的流,然后我将通过网络发送。

我的第一次尝试是使用Image.FromHBitmap(),但是这个忽略了 alpha 通道。请参阅此问题: 在 C# 中使用本机 HBitmap 同时保留 Alpha 通道/透明度

解决方案显然是创建一个使用本机位图数据的新位图。但是请查看汉斯对另一个问题的回答的评论:有些拇指会颠倒,有些则不会。是否有可能确定我是否必须轮换?(大卫的评论没有答案,我不能在那里发表评论......)我读了很多次,位图数据通常是倒置存储的,那么步幅值将是负数。我检查了NativeMethods.BITMAP对象的所有字段,对于正常图像和倒置图像,它们都没有区别。所以必须有另一种解决方案。

还有另一个问题:当将位图保存到 JPEG 流时.Save(somestream, ImageFormat.Jpeg),透过图像透明部分的背景会变成白色,但我希望它是黑色的。

先感谢您!

0 投票
1 回答
570 浏览

winapi - SetBitmapBits 未在 Window 上设置 Captured HBITMAP

我想从 0x0(左上角)获取屏幕的 500x500 HBITMAP 并将其绘制在我的窗口上。这是我的代码。SaveBitmap()保存 HBITMAP 及其工作正常。

问题是没有在窗口上绘制捕获的图像。我在哪里失踪?

0 投票
1 回答
1911 浏览

c# - 将 hBitmap 保存为位图时出现一般 GDI+ 错误

我正在编写自己的 DIB/BMP 解码器(我知道已经有其他解码器,但我正在学习图像处理)并且我已经设法将像素存储在指针中并获取用于编写 hBitmap 的相关尺寸,但是这个错误不断出现:

下面是堆栈跟踪和代码:

代码:

我不知道出了什么问题,但我对 PCX 文件使用了类似的功能,除了单色图像外,它们都失败了,渲染得很好。如果有人可以提供帮助,我将非常感谢。

0 投票
2 回答
418 浏览

c++ - HBITMP 的 WINdows 函数 DestroyObject 不能很好地工作(内存泄漏)

我需要经常在 C++ 程序中创建 HBITMAP 图像,当然我需要在使用后删除这些位图。代码与此类似

我在一个线程中有一个无限循环,不断创建一个 HBITMAP,调用一个使用这个位图的函数,然后删除它。在循环开始时,我检查进程内存使用量是否大于前一个循环,如果是,我打印它。使用 CreateBitmap() 和 DeleteObject() 会导致少量内存泄漏;进程内存使用量偶尔会增加 4KB(有时每 10 秒一次,有时几分钟内没有任何反应)。

我也没有调用进程函数就测试了,问题依旧存在,所以我认为是由于位图处理。此外,我做了另一个测试,在无限循环之外创建图像(所以我只创建一次)并在循环中处理它无限次,并且没有发生内存泄漏。

注意:DeleteObject() 始终返回值 >0(无错误)。

问题是否可能与 DeleteObject() 函数有关?以这种方式创建/删除位图有什么问题吗?

技术说明:Windows XP Borland C++ Builder 5

0 投票
2 回答
2364 浏览

winapi - 当我使用 GetBitmapBits 获取位图信息时,HBITMAP 的像素格式是什么?

我有 HBITMAP hBitmap。我使用 GetBitmapBits(hbitmap, width * height, buffer);

缓冲区中写入的像素格式是什么?

谢谢。

0 投票
2 回答
1681 浏览

c++ - 从 glReadPixels 创建 HBITMAP

我需要从 glReadPixels() 调用返回的数据创建一个 HBITMAP:

我尝试使用:

这可以粘贴到 mspaint 中(所以数据很好)但是我到底如何将它放入 HBITMAP 中?!?!

0 投票
2 回答
2273 浏览

c++ - GDI C/C++ - BITMAP 到现有的 HBITMAP

如何创建与设备上下文兼容的位图,然后将获得的句柄与 BITMAP 结构相关联?如果我写:

创建一个与 hdc 兼容的 HBITMAP 句柄,然后初始化一个新的 HBITMAP(填充位图数据),但不保持其兼容性。是否有一个函数不允许从 BITMAP 创建 HBITMAP,而是用已经存在的 BITMAP 源填充初始化的 HBITMAP?

0 投票
3 回答
6614 浏览

c++ - HBITMAP 内存泄漏

无论我多么努力地寻找,无论我尝试了什么,我都找不到这段代码泄漏的原因。实际上,我不确定是否存在泄漏,但每次使用这段代码时,GDI 对象的数量都会增加。

我已经用工具检查了 GDI 对象,我发现 HBITMAP hBmp 是泄漏的对象。我应该如何删除它?

DeleteObject 不工作。

谢谢

0 投票
1 回答
5937 浏览

c++ - HBITMAP 添加透明度/alpha 通道

我正在尝试为 hbitmap 对象添加透明度,但它从不绘制任何东西:/

这是我用来绘制手柄的代码

这是应该向 hbitmap 添加 alpha 通道的代码

编辑:

这是我如何创建位图的代码我稍后在一些代码中填充像素数据