问题标签 [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.

0 投票
2 回答
2446 浏览

image - BitBlt 性能

我有一个将多页 tiff 拆分为单页的函数,它使用 windows BitBlt 函数。在性能方面,显卡对分体有影响吗?是否值得使用直接的 C/C++ 库?

0 投票
2 回答
8227 浏览

mfc - 如何正确截屏 Aero/DWM 上的特定窗口

背景信息:我有这个我编写并使用了很长时间的 MFC 应用程序,当用户点击 Print Screen/Alt+Print Screen 键时,它几乎会自动将屏幕截图保存到硬盘上。直到现在我已经使用 Windows 7 RC 几周了,我一直在推迟使用与 Aero 相关的任何东西。

问题:我使用标准的 GetDC/BitBlt 方法来捕获窗口内容。在进行常规全屏抓取时(无论打开多少个窗口等),我对这种方法没有任何问题。当我尝试捕获前景窗口 (Alt+PrintScreen) 时出现问题。这里有两个例子:

示例 1 http://indiecodelabs.com/extern/example1.jpg

示例 2 http://indiecodelabs.com/extern/example2.jpg

正如你所看到的,我在边界应该是垃圾。这在顶部更加明显,我们可以在两个屏幕截图中看到工具栏的一些重复。

我已经在谷歌上搜索了几个小时,我能找到的只是文章说在 DWM 下 BitBtl/GetDC 方法不起作用,但找不到一个解释我们(开发人员)应该做什么的文章在 DWM 上运行时,能够在我们的应用程序中保持相同的功能。

任何帮助,指针,建议将不胜感激。

0 投票
5 回答
1541 浏览

windows - 光标在 bitblt 上消失

我有一个 Windows 应用程序,它从屏幕上抓取像素以录制(以视频的形式)到自定义屏幕共享格式。问题在于,在使用软件光标的机器上,使用 SRCCOPY|CAPTUREBLIT 从屏幕上闪烁(这样分层窗口也会显示在图像中)会导致光标闪烁,如“光标消失的情况”中所述

对于单个屏幕截图,这不是问题,但是当快速连续拍摄多个屏幕截图时,光标闪烁得很快,有时似乎完全消失了。

我已经研究过使用 Windows Media Encoder SDK(如 codeproject 文章中所述,见下文),因为它不会导致光标闪烁,但似乎无法直接访问帧数据。不幸的是,实时编码和自定义格式都是必需的,这使得 windows Media Encoder 无法用于此目的。

我也尝试过 DirectX 方式(在同一篇文章中描述,见下文),它似乎也遇到了同样的问题。

有没有其他人遇到过这个问题?一定有办法绕过它——许多商业屏幕共享程序都没有这样的问题。

文章:www.codeproject.com/KB/dialog/screencap.aspx

0 投票
4 回答
3764 浏览

winapi - Bitblt 黑度

我正在运行以下代码,

代码很好。但我在这个矩形周围看到黑色。这是为什么?这是一个示例图像。

0 投票
2 回答
6311 浏览

c++ - 在 C++ 中从 HBITMAP 转换为 Jpeg 或 Png

有谁知道我如何使用 HBITMAP 变量来编写 png 或 jpeg 文件?

我首先考虑使用 GDI+ 执行此操作,但它给了我错误,告诉我 min/max 尚未定义(定义它们只会带来更多问题),然后我查看了 libpng 的 C++ 绑定(png++)并且无法获得示例编译。

谢谢,

米奇

0 投票
2 回答
2350 浏览

objective-c - 在 Objective-C/Cocoa 中等效的 BitBlt()

几年前,我用 Visual Basic 制作了一个滚动瓷砖 2D 视频游戏。我正在将它翻译成 Mac 的 Cocoa。是否有允许我使用BitBlt的框架?或者在不使用 OpenGL 的情况下是否有与 BitBlt 等价的东西?谢谢!

0 投票
4 回答
525 浏览

ruby - 如何使用 Ruby 使用 Win32 的 BitBlt?

有谁知道如何使用 Ruby 使用 Win32 的 BitBlt() ?似乎您需要使用目标 DC(设备上下文),而 Ruby 如何处理呢?我使用 GetPixel(),即使获得 100 个像素(大约需要 10 秒)也很慢。谢谢。

0 投票
3 回答
8820 浏览

c# - C# Bitblit 从位图到控制(紧凑框架)

我曾经使用 BitBlt 将屏幕截图保存到图像文件(.Net Compact Framework V3.5、Windows Mobile 2003 及更高版本)。工作得很好。现在我想为表单绘制位图。我可以使用this.CreateGraphics().DrawImage(mybitmap, 0, 0),但我想知道它是否可以像以前一样与 BitBlt 一起使用并交换参数。所以我写道:

(再往下:)

但表格保持纯白色。这是为什么?我犯的错误在哪里?感谢您的意见。干杯,大卫

0 投票
1 回答
8852 浏览

c# - BitBlt 代码不起作用

我正在尝试使用此代码将 aBitmap直接绘制到 a 上PictureBox

但不是渲染Bitmap's 的内容,它只是绘制了一个近乎黑色的实心块。我很确定问题出在源 hDC 上,因为如果我在上面的代码中将 SRCCOPY 更改为 WHITENESS,它会按预期绘制一个纯白色块。

注意:下一个片段可以正常工作,所以位图本身没有问题:

0 投票
1 回答
893 浏览

opengl - 通过硬件在 OpenGL 上滚动 2D 引擎?

我使用 OpenGL 作为 2D 平铺引擎的底端。当一切都是 2D 时,优化某些问题很简单。例如,滚动。如果我知道屏幕的某个部分需要滚动到底部,那么我就可以在该部分上快速移动。我晚上一次移动超过 1 个像素。如果没有明确的硬件支持(想想旧的任天堂硬件),这需要大量的像素写入。片上 bitblt 将是下一个最好的东西。

本质上,我正在研究如何优化我的 GL 调用以使用 VRAM 纹理渲染作为高效的硬件 blit。

是否可以让 GL 滚动帧缓冲区,或者我应该让自己接受双缓冲并为每一帧重新渲染整个场景?

谢谢