问题标签 [bitblt]
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.
c++ - BitBlt 从剪贴板复制位图给出错误的颜色
我正在将剪贴板中的图像粘贴到我的程序中。位图放在背景 memDC 位图上,然后在绘制到屏幕之前与另一个 memDC 合成。背景位图是每像素 8 位。问题是 bitblt 将黑色(0x00000000)变成了几乎黑色(0x00010101)。如果我将相同的东西粘贴到 MSPaint 中,我会得到黑色。如果我从 MSPaint 复制黑色,我会得到几乎黑色。(其他颜色也被破坏)。如果我将背景位图更改为 32bpp,我会得到正确的颜色,但目前这不是一个选项。
以下是一些演示该问题的代码:
使用 GetPixel() 和 GetNearestColor(),似乎我应该得到我正在寻找的结果,但我没有。我想我错过了某种调色板操作?
更新
我真正遇到问题的部分,也许我误解了这些 API 的重点,是我可以查询像素颜色,然后询问上下文它将使用什么颜色,它会返回正确的颜色(黑色),而不是 BitBlt 生成的几乎黑色。
其他程序似乎没有在剪贴板上放置调色板——可能是因为它们放置了不需要调色板的 32bpp 位图?根据MSDN 的剪贴板翻译表查看可用的内容,他们甚至没有像我所知的那样做 DIB
winapi - 将 StdPicture 透明度颜色转换为白色
我正在使用CodeJock ImageManager 组件来保存各种图像。我想将这些图像之一放入 FlexGrid 单元格。
我拥有的图像是 Png 格式并且具有透明背景,因此当我将图像加载到网格中时,如下所示:
原始图像中透明的背景现在是黑色的:(
如果我使用上述方法将图像加载到 PictureBox 中,也会发生同样的情况)
根据文档CreatePicture
返回一个StdPicture对象,有什么方法可以转换这个图像(也许使用 BitBlt),以便黑色是白色的?我不确定这是否可能?
我只需要使用大约三个图像来执行此操作,因此如果我必须先将它们加载到 ImageList 或其他东西中,那就可以了。
c++ - 使用 BitBlt 遮罩位图 C++ 的背景
我正在制作一个带有表示对象的位图的小游戏,并且我正在尝试使用位图蒙版来掩盖背景。我在google上查了一下,做了两张位图。一艘船和一个作为面具。对于面具,我把我想要的所有东西都涂上了黑色和背景白色。(如果这应该相反,请告诉我)。我这样加载位图:
现在如何使用 BitBlt 光栅操作在特定位置的屏幕上显示没有背景的位图。在不掩盖背景的情况下,这就是我一直在做的事情:
谁能告诉我如何掩盖背景然后将窗口移动到新位置
编辑:顺便说一句,背景只是另一个位图,其加载方式与显示船舶顶部的其他位图相同。
windows - 不连续的 BitBlt 捕获
我在我的项目中大量使用 BitBlt。我创建了许多线程,并在每个线程中通过 BitBlt 捕获屏幕。除了以下问题外,它现在工作得很好并且符合预期。
当用户单击正在运行的程序或例如已在任务栏上打开的资源管理器时,就会出现问题。您知道,当您单击任务栏上正在运行的程序时,它会最小化或出现在屏幕上。我正在谈论的问题恰好发生在这个过渡中。在那一刻,就像中断一样,所有线程停止捕获屏幕一秒钟,然后继续捕获。当您在音量控制窗口上向下或向上移动时,也会发生同样的事情。您能否解释一下为什么会发生这种情况以及如何防止这种情况发生?
谢谢。
周杰伦
colors - 使用 BitBlt 以 YUV 格式捕获屏幕
我目前正在使用 BitBlt 函数来捕获屏幕,然后对其进行编码。由于我的编码器使用 YUV420 格式作为输入,我需要在编码之前将数据从 RGB 转换为 YUV。我想知道是否有任何方法可以以 YUV 格式而不是 RGB 格式捕获屏幕?
谢谢,杰
c# - BitBlt 返回 false,GetLastError 返回 6(无效句柄)?
自从我上次涉足 GDI 以来已经有几年了,但我不记得以前遇到过这样的问题。我没有遇到异常,但 BitBlt 返回 0 (False),检查 GetLastWIN32Error 显示 6。这似乎是一个无效的句柄。并且目标图像保持空白。
我也添加了对 SelectObject 的调用,但这不应该也不会影响无效句柄错误。
对我所缺少的有什么想法吗?
c++ - 如何保存hdc并恢复它?
我编写了一个应用程序来在客户区画线、矩形、椭圆。当我画任何东西时,我需要保存客户区的图像。当出现 WM_PAINT 消息时,我会恢复它。
我使用 HBITMAP 保存和恢复
节省
恢复
但它不起作用。请帮我。
vb.net - 如何在 vb.net 中存储位图资源
我曾经使用 VB 6.0,现在我正在切换到 .net,我发现很多事情都发生了变化。过去,我曾经将图形资源存储在图片框中,使它们不可见,然后在需要时将它们 bitblt 到表单/屏幕/画布上。这是一种很好、整洁的方法,但现在我试图在 VB.NET 中做同样的事情,但它不会工作。
如果图片框在屏幕上并且可见,则一切正常,但是使图片框不可见或将其移出屏幕会破坏 bitblt 绘制的图形。我可以成功加载存储在外部的位图,但我想知道的是,在 VB.NET 应用程序中存储图形(位图)资产以供 bitblt 使用的最佳方式是什么?
作为参考,这是一个代码片段:
vb.net - VB.NET using bitblt to draw bitmap renders a black square
I'm just starting out with VB.net after many years of VB 6.0 and I thought I'd get started with some graphics.
Just for fun I'm using BitBlt to draw a bitmap I have loaded as a resource and draw it on a form. I can load an existing image from a picturebox and bitblt it, which works fine. I can also load the bitmap from resources and store it into the picturebox, but when I take the bitmap, turn it into a GDI Graphics object and BitBlt it onto the form, all I get is a black square that is the same size as the bitmap.
Here is my code:
The reasons I want to use bitblt are a) I've used it before, so it was my first choice. b) I know that it is possible to use a black and white mask to mask out some areas as transparent, which is what I need. and b) the graphics may be moving around frequently.
Is there a better way of drawing graphics with a transparent background onto a form or picturebox? e.g. a png with an alpha channel?
c# - c# gdi32 bitblt 似乎什么都不做
我正在尝试使用BitBlt获取图形区域并将它们存储在位图中。但是在这里,我做了一些更容易理解我的问题的事情:
为什么在 BitBlt 之后,我的 destBitmap 包含蓝色/黄色矩形(目标中的初始位图),而不是应该从源位图中删除的红色/绿色矩形?
导入是这样完成的:
最后清理代码和位图流以查看位图内容: