问题标签 [stretchdibits]

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

gdi - 如何设置 GDI HDC 的可绘制区域?

我想在 HDC 上绘制 HBITMAP,

我使用了 StretchDIBits。它工作正常。::拉伸DIBits。

但是,我只想要一个窗口来观看绘图结果,在窗口旁边,我希望stretchDIBits不生效(它不能在其他区域上绘制),我该怎么做?

0 投票
1 回答
544 浏览

gdi - 如何通过 StretchDIBits 模仿缩略图周围的阴影?

我现在正在编写一个图像查看器,它用于查看缩略图。由于它很丑,我决定画阴影圆形缩略图。

有背景色。我正在使用 StretchDIBits 在缩略图的位置绘制阴影图像。然而,它覆盖了背景颜色真的很烦人......当背景是白色时,它看起来很完美。但如果背景不是白色的,它有一个白色的边框。

所以我使用 AlphaBlend,首先将阴影图像绘制到 DC 上,然后使用 AlphaBlend 到背景上。但是,我仍然可以看到白色边框。

不管背景是什么,有什么理由要生成完美的阴影。

0 投票
1 回答
6208 浏览

gdi - StretchDIBits 似乎很慢,有更快的 API 吗?

我想在同样大小的 HDC 上画一个 dib。我正在使用:des 和 src 大小相同。

但我发现它很慢,因为 des 大小是相同的,我只需要将 dib 复制到 dc 上。有没有比 StretchDIBits 更快的方法?

正如

0 投票
2 回答
8606 浏览

c++ - 使用 StretchDIBits 在 GDI+ 图形对象上绘制位图以进行缩放

我正在使用 DrawImage 方法在图形对象上绘制位图图像,但是图像数量很大,因此绘图花费了太多时间。我在这个论坛上读到,使用 StretchDIBits 绘制所需的时间更少。我通过调用 Drawimage 来缩放图像,但我想要任何其他有效的方法。我有一个位图矢量* & 我想在图形上绘制每个位图。

m_vImgFrames 是包含的图像向量Bitmap*。我已经从Bitmap*.

使用这个 HBITMAP 我想在 orghDC 上绘制,最后在图形上绘制。所以我想知道如何使用 StretchDIBits 来缩放位图并最终在图形对象上绘制。

我是这个论坛的新手。任何想法或代码都会有所帮助

0 投票
2 回答
522 浏览

integer - 部分 StretchDIBits 时图像抖动

我正在使用 C++ GDI、StretchDIBits 在 DC 上绘制图像。

因为原始图像很大,需要高质量。我使用 HAFTONE 模式,在 DC 上绘制整个图像(缩放图像)似乎需要时间。

所以我决定使用 StretchDIBits 进行部分绘制。但是关于 StretchDIBits 有一个严重的问题。

我只能将整数中的矩形绘制到整数中的区域(宽度和高度,以及x,y的左上角都是整数)

如果,图像是 21 * 21 。我现在在 (20, 20, 60,60) 向 DC 画 (5, 5, 7, 7),下次我想在 (21, 20, 61, 60) 画。原图没有对应的位置。所以我只能画一个近似矩形到 DC。现在问题发生了,图像在颤抖!

我对这个问题很生气。我怎样才能避免晃动?

0 投票
1 回答
1101 浏览

performance - DrawDib StretchDIBits 哪个更快?

我从未使用过 DrawDib API,我的应用程序的 UI 渲染基于 stretchDIBits。因为真的有很多大的图像要绘制,stretchDIBits(HAFTONE 用于获得更好的渲染结果)的性能很差......

我听说 DrawDib 是一组用于将 DIB 绘制到 DC 的高效 API。它比stretchDIBits好吗?

谁能给我一些他们的比较文件?如果这个问题很愚蠢,我很抱歉。我对这方面的经验真的很少。

提前致谢。

0 投票
1 回答
1411 浏览

c++ - StretchDIBits 失败,有时它什么也没画,

我正在使用 gdi c++,如果我绘制 7000*5000 等大图像,StretchDIBits 函数有时会失败。它什么也没画。GetLastError() 表示没有足够的系统资源。任何人都可以解释为什么 StretchDIBits 需要资源,即使 DC 准备成功。

0 投票
2 回答
11728 浏览

c++ - 如何使用 LoadImage 和 StretchDIBits 绘制 PNG 图像?

(这与我如何使用 Win32/GDI(如果可能,不使用 GDI+)加载 PNG 图像? )的问题有关。)

大家好,

我想知道,鉴于您有一个 PNG 资源嵌入到一个带有 ID 的二进制文件中IDB_PNG1,并且LPDRAWITEMSTRUCT要绘制到其中(这意味着您有HDC目标的 和矩形),您如何使用该图像将该图像绘制到屏幕上StretchDIBits? 我以前BitBltTransparentBlt以前一起工作过,但StretchDIBits似乎工作方式不同,而且似乎LoadImage不适用于 PNG。

谢谢!

(注意:我输入的语言是 C++,但这不是太重要...... C、C#、Visual Basic 等都可以;我只是想弄清楚步骤,而不是所需的确切代码。)

0 投票
1 回答
440 浏览

c++ - 在 C++/CLI 中全屏并返回后重新绘制图像

我正在构建应用程序,它使用 StrechDIBits 在标签的 hdc 上绘制原始位图图像。

通过这种方式,我绘制了整个视频流,一张接一张地从流中绘制,效果很好。我还具有在整个屏幕上调整表单和标签大小以实现全屏的功能,在播放视频时也很有效。

但是,当我停止视频或只发送一张图片并调用全屏功能时。它不会重新绘制图像,这是我的问题。我尝试在调整大小后使用窗体和标签的 Paint Event、Resize Event 再次绘制图像,但没有任何效果。当我全屏或恢复正常大小时,我的图像会短暂闪烁,但随后会被控件的颜色重新绘制并消失。我试图将绘画代码与 StretchDIBits 放在任何地方都没有任何效果。非常感谢任何帮助或建议。

编辑:对我来说可悲的是,当我将绘画代码放入,例如,标签的点击事件时,它工作正常......

0 投票
1 回答
271 浏览

mfc - 如何访问由 StretchDIBits 更改的视图中的原始像素

我们遗留应用程序中的视图正在使用 StretchDIBits 显示图像。如果您不熟悉 StretchDIBits,它用于在 MFC 视图上将给定尺寸的图像显示为另一种尺寸。例如,使用该函数可以在 (512,512) 上显示大小为 (128,120) 的图像。

在显示的宽度或高度是图像宽度或高度的倍数的简单条件下,我可以毫无问题地从显示位置计算原始图像中像素的位置。但在另一种情况下,我想我需要知道 StretchDIBits 如何将像素从原始图像分配到给定大小的显示矩形,尤其是当两者的大小之间没有倍数时。