问题标签 [stretchblt]

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 回答
2672 浏览

c++ - C++ WIN32:重新缩放位图/提供位图 HDC

所以我一直在尝试重新缩放位图而不打印原始图像并重新打印重新缩放的图像。我正在尝试使用基于 MSDN Microsoft 重新缩放图像功能的 StretchBlt():

https://msdn.microsoft.com/en-us/library/windows/desktop/dd162950(v=vs.85).aspx

但这需要一个连接到源的辅助 hdc,如果不先打印 HBITMAP,就无法进行拉伸。有没有办法将 HBITMAP 转换为 HDC?我已经能够从 HBITMAP 中获取 HANDLE,这可能会提供更直接的路线。我可以做的另一件事是在标准位图中分配的内存(未保存)中创建一个调整大小的位图并打印它。

我打印位图的标准方式是:

我可以尝试的另一个选择是研究另一种显示 bmp 的方法。我对win32很陌生,所以我不知道完成这项任务的任何其他方法。关于如何在不首先打印它的情况下重新缩放 BITMAP 的任何见解。

0 投票
1 回答
1007 浏览

c++ - C++ Win32:加速位图操作

我正在寻找加快位图显示程序的速度。它不是非常慢,我只是认为它可以更快。我在 Win32 环境中运行它。这是代码:

我在开始时运行“加载”功能,我可以接受需要多长时间。每当在程序中需要时,我都会运行 newBit 函数。我专门使用了 stretchBlt 命令,因为我需要调整大小的功能。任何对我做错了什么以及我可以改进的地方的见解将不胜感激。

0 投票
0 回答
537 浏览

windows - 对于未设置为主监视器的第二个监视器,BitBlt 的奇怪行为

我在 Windows 10 上使用 BitBlt / StretchBlt API 捕获图像,这取决于是否需要缩放屏幕。每当我捕获未配置为主显示器的第二台显示器时,似乎有一种奇怪的行为,即捕获的屏幕的前半部分是屏幕后半部分的复制品。这平均每 10 个图像随机发生一次。

我在互联网上找不到与这种奇怪问题相关的任何文件。我什至没有做任何多线程。捕获频率可能有问题吗?但这看起来甚至没有意义,因为每当我将显示器设置为主显示器时,屏幕捕获都没有问题。

这是原始图像

原始图像

捕获的图像

捕获的图像

监视器对齐

显示器对齐

注意: 到目前为止,只有当前景窗口为 Notepad++ 时,我才能重现该问题。我不确定其他应用程序是否也会出现此问题。,我不能采用基于 directX 的方法,因为该程序也必须在 WindowsXP 上运行。

这是代码的摘录:

我在这里做错什么了吗?

任何帮助都是可观的,在此先感谢。

0 投票
2 回答
216 浏览

winapi - 将位图图像绘制到窗口中的正确方法

我有一个函数,它获取位图图像的矩形区域,将其重新缩放为不同的尺寸,并在我的对话框应用程序的窗口内的某个偏移处绘制它:

我使用CWnd m_cImageWindow成员变量创建和维护窗口。

我从对话框的OnPaint处理程序执行绘图,如下所示:

我有两个问题:

  1. 每当我更改绘图参数时,我都会看到闪烁。根据我在这里和那里阅读的内容,解决此问题的标准方法是使用临时 DC 进行双缓冲。但据我了解,这正是我已经在做的事情。

  2. 如果某些目标区域位于窗口之外,则会将其绘制在对话框内的其他控件上。我可以通过调用这些控件中的每一个来部分解决这个MoveWindow问题SetWindowPos。但我仍然可以看到他们身后闪烁的图像。我尝试过SetWindowPos以各种不同的方式调用,但徒劳地希望它会规定控件的严格 Z 顺序。

谢谢你。

0 投票
0 回答
59 浏览

winapi - HBITMAP StretchBlt 导致图像饱和

我使用以下代码来调整 win32 HBITMAP 的大小。

但是,我发现新图像已饱和。如原始图像所示 在此处输入图像描述

和新图像(请忽略图像中的绿色矩形)

在此处输入图像描述

为什么?

0 投票
1 回答
413 浏览

winapi - 最新安全更新后无法打印图像

我的应用程序在最新的安全更新后无法打印。

所有 API 调用均未失败,但图像即使在 PDF 中也不会显示。文字和线条等形状打印效果很好。

该代码使用 IPicture 接口和 OleLoadPicture() 加载 JPG 图像。然后我使用它的 Render() 调用将其转换为 HBITMAP,最后在打印 HDC 时使用 StretchBlt()。

没有一个调用失败,所有返回值都被检查。直到今天和最新的 Windows 安全更新,一切都运行良好。当然,如果我在我的计算机上卸载 KB5000808 更新或在我的客户计算机上卸载 KB5000802,一切都会恢复正常,但这不是一个长期的解决方案。

有人今天有类似的问题吗?知道如何解决这个问题吗?还有其他打印图像的方法吗?

编辑:

即使我使用位图而不是 JPG 图像,也会出现同样的问题。所以JPG渲染没有问题。另一方面,JPG 和 BITMAP 都显示在屏幕上。只有打印不起作用。

0 投票
1 回答
46 浏览

bitmap - 在 mfc 中查看固定空间中的位图

我正在尝试设计一个加载位图图像的应用程序。我有不同大小的位图,但我希望它们显示在恒定空间(如大小为 500x500 的矩形)上。我尝试StretchBlt()了以下方式,但结果令人失望,并且图像的大小仍然不同。代码如下所述。提前致谢。