问题标签 [gdi]

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

c++ - 谁能给我一个使用 CreateHatchBrush 的样本

我想在我的软件中围绕缩略图绘制阴影。似乎 CreateHatchBrush 可以提供帮助,但我不知道如何使用它,任何人都可以提供 C++ 中的示例吗?非常感谢!

0 投票
3 回答
3994 浏览

windows - 在 Windows 上混合 OpenGL 和 GDI

我正在尝试找出一种在 Windows 中混合 OpenGL 渲染和 GDI 的方法。以前我一直将我的 OpenGL 内容渲染到一个帧缓冲区对象中,将其提取出来,然后将其放入 windows GDI 图形上下文中,然后在顶部绘制我的 GDI 内容。这真的会削弱帧率。

我想做与我现在正在做的相反的事情,所以我的 OpenGL 渲染直接在窗口上完成,然后我将 GDI 的东西渲染到一个位图,该位图被上传到纹理,然后使用四边形覆盖。GDI 的东西并没有太大的变化,所以我不需要每帧都重新绘制它,我可以缓存纹理。

我几乎可以让它工作,问题是我似乎无法从 GDI 位图中获得正确的 alpha 值,因此文本和线条会出现可怕的锯齿。

有没有人有任何有用的资源来做到这一点?甚至可以让 GDI 或 GDI+ 以我需要的方式写入 alpha 通道吗?

0 投票
3 回答
1164 浏览

c# - 使用画笔和钢笔的指南

制作 gdi 画笔和钢笔有多贵?我应该在添加需要的基础上创建它们并将它们包装在使用中以便快速处理它们,还是应该创建一个类似于 System.Drawing.Brushes 类的静态类?

0 投票
1 回答
1882 浏览

winapi - 打印时 StretchBlt 失败

我有一个图表(位图格式),我正在尝试使用StretchBlt. 绘制到屏幕时,StretchBlt工作正常。绘制到 CutePDF 打印机时,它返回 0,将最后一个错误设置为ERROR_INVALID_HANDLE,并且仍然可以工作。绘制到 PDF995 打印机或物理 HP 打印机时,它返回 0,将最后一个错误设置为ERROR_INVALID_HANDLE,并且无法绘制任何内容。

什么会导致StretchBlt某些设备出现故障?我已经验证了源位图是一个 DIB 并且目标支持StretchBlt通过调用GetDeviceCaps.

这是我的代码,以防相关:(它是用 C++Builder 编写的,所以它使用 Delphi 的 VCL;TCanvas 包装了 HDC,TBitmap 包装了 HBITMAP。VCL 提供了自己的StretchDraw函数,不支持 HALFTONE;我得到了同样的问题。)

0 投票
1 回答
1517 浏览

c++ - C++、win32、gdi 打印:DrawEdge 没有达到 DrawText?

我正在尝试使用 DrawEdge 和 DrawText 函数(http://msdn.microsoft.com/en-us/library/ms534882.aspxhttp://msdn.microsoft.com/en-us/library/ms533909.aspx)。它们工作得很好,然而,当我试图到达我的纸的底部(距离它大约 35 毫米)时,这条线就停止了绘制。我认为这是我的打印机的限制。但是,当我绘制文本时,我的打印机在那里打印没有问题,甚至更低。DrawEdge 有没有办法在那里画线?还有另一种方法可以做到这一点吗?这是一个错误吗?

0 投票
7 回答
2267 浏览

c - GDI 泄漏问题

我注意到使用任务管理器,以下代码中存在 GDI 泄漏。执行此代码的进程中 GDI 对象的计数每次执行时都会增加 1,但是我似乎找不到问题所在。

任何帮助,将不胜感激。

R M

0 投票
3 回答
2701 浏览

c++ - 在屏幕上创建计时器的最佳方法

我有在屏幕上创建一个倒计时的想法,比如 01:02(全尺寸)。有一件事是我真的不知道如何开始。

我确实知道基本的 c/c++、win32 api 和一点 gdi。

有人对如何开始有任何指示吗?我的程序就像将计算机变成一个大秒表(但具有附加功能)

不要求代码,只是一些关于如何开始的想法/入门。主要做网络工作让我对 win 编程有点生疏了。

欢迎任何想法

谢谢

注意:由于速度的原因,我认为我必须使用 c/c++ 来执行此操作。我的秒表程序会在非常慢的电脑上运行,比如 p3 800mhz,所以速度真的很重要。

0 投票
1 回答
1834 浏览

graphics - 带有 BitBlt 帮助的双缓冲 VB6

编辑:我更新了第 2 版。现在它是单色的。我试图通过确保CreateCOmpatibleBitmap使用窗口的 DC 而不是 memdc(如所写)调用来修复它,但它仍然是错误的 :(

以下是我编写的 3 个不同简化版本的函数。版本 1 完美运行(但显然有闪烁),版本 2 什么都不做,版本 3 用黑色填充整个表格。版本 2 有什么问题?Scalemode 设置为 vbPixels。

版本 1:

版本 2(新):

版本 3:

注意:在调用绘画之前,我将下面的代码粘贴在我的调整大小函数中。它没有帮助,但我很确定我应该把它留在那里:

0 投票
1 回答
2297 浏览

.net - Intersecting GraphicsPath objects

How can I intersect two (.NET) GraphicsPath objects?

0 投票
4 回答
7027 浏览

windows - WinAPI - 如何绘制虚线?

我使用 WinAPI GDI 方法创建 HPEN:

HPEN hPen = CreatePen(PS_DOT, 1, color);

然后使用方法MoveToEx和画线LineTo

事实上画线是虚线。3 个空像素,3 个带颜色像素——虚线。

为什么 PS_DOT 样式不画虚线?如何使用 WinAPI 绘制虚线?