问题标签 [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 回答
723 浏览

windows - 带渐变的折线

有没有办法沿着弯曲路径绘制一条线,其梯度在垂直于线方向的方向上变化?我正在为我的图形使用 GDI+ 框架。

0 投票
4 回答
16866 浏览

c# - 滚动时如何消除Windows.Forms自定义控件中的闪烁?

我想在 C# 中创建一个自定义控件。但是每次我必须完全重绘我的控件时,它都会闪烁,即使我使用双缓冲(首先绘制到图像,然后将它的 blitting)。

当我必须完全重绘时如何消除闪烁?

0 投票
1 回答
3285 浏览

c# - C# / dot-NET 的字体渲染库?

是否有任何免费的第三方库可用于在 dot-NET 应用程序中呈现任意缩放和旋转的文本?尽管原生 GDI+ 允许文本缩放和旋转,但其确定渲染文本尺寸的方法不够精确,并且在将文本添加到渲染字符串时的字距调整差异使其不适合在某些类型的软件中使用(例如,例如,图形编辑软件)。

要求:

  • 本机 .NET 代码。
  • 任意缩放和旋转文本。
  • 精确的文本指标。
  • 无论字符串长度如何,都保持一致的字距调整。
0 投票
4 回答
2935 浏览

c# - 如何将现有内存缓冲区包装为 GDI 的 DC

我有一个对应于我的屏幕分辨率(1280x800,每像素 24 位)的内存缓冲区,其中包含我的 24bpp 屏幕内容。我想将其转换为 8-bpp(即 Windows 中的半色调调色板)。我目前这样做: 1. 使用 CreateDIBSection 分配一个新的 1280x800 24-bpp 缓冲区并将其作为 DC 以及普通内存缓冲区访问 2. 使用 memcpy 从我的原始缓冲区复制到步骤 1 中的这个新缓冲区 3 . 使用 BitBlt 让 GDI 执行颜色转换

我想避免步骤 2 的额外 memcpy。为此,我可以想到两种方法:

一种。将我原来的 mem buf 包装在 DC 中以直接从中执行 BitBlt

湾。编写我自己的 24-bpp 到 8-bpp 颜色转换。我找不到有关 Windows 如何实现这种半色调颜色转换的任何信息。此外,即使我发现,我也不会使用 BitBlt 可以访问的 GDI 加速功能。

那么我该怎么做(a)或(b)?

谢谢!

0 投票
3 回答
522 浏览

c# - .NET 的基于 f/oss GDI+ (System.Drawing) 的图形和图表组件有什么好的?

我想为 .NET 3.5 WinForms 创建基本的折线图、条形图、饼图和面积图,并且我有兴趣找到一个免费、成熟、开源的 .NET(最好基于 C#)项目来帮助我实现这一目标。我会考虑一个基于 WPF 的项目,但是我更喜欢 GDI+,所以我宁愿它使用 System.Drawing 和/或 GDI 互操作作为其基础技术。

谢谢!

0 投票
5 回答
1809 浏览

c# - LinearGradientBrush 神器解决方法?

.net 中的 LinearGradientBrush(或者甚至在整个 GDI+ 中?)似乎有一个严重的错误:有时,它会引入工件。(参见此处此处- 基本上,线性渐变的第一条线是在 endcolor 中绘制的,即从白色到黑色的渐变将以黑色线开始,然后以适当的白色到黑色渐变开始)

我想知道是否有人找到了解决方法?这是一个非常烦人的错误:-(

这是Artifacts的图片,注意有2个LinearGradientBrushes:

替代文字 http://img142.imageshack.us/img142/7711/gradientartifactmm6.jpg

0 投票
5 回答
14698 浏览

gdi+ - MeasureString() 在左边和右边填充文本

我在 C++ 中使用 GDI+。(这个问题也可能存在于 C# 中)。

我注意到,每当我调用 Graphics::MeasureString() 或 Graphics::DrawString() 时,字符串的左右两侧都会填充空格。

例如,如果我使用的是 Courier 字体(不是斜体!)并且我测量“P”我得到 90,但“PP”给我 150。我希望等宽字体给出的宽度正好是“PP”的两倍.

我的问题是:这是预期的还是记录在案的行为,我该如何禁用它?

0 投票
9 回答
32250 浏览

c# - GDI+ / C#:如何将图像保存为 EMF?

如果您使用 Image.Save 方法将图像保存到 EMF/WMF,则会出现异常 ( http://msdn.microsoft.com/en-us/library/ktx83wah.aspx )

是否有另一种方法可以将图像保存到 EMF/WMF?有没有可用的编码器?

0 投票
3 回答
9978 浏览

c# - 如何确定 GDI+ 中两条线的交点?

我正在使用 .NET 制作具有绘图表面的应用程序,类似于 Visio。UI 用 Graphics.DrawLine 连接屏幕上的两个对象。这个简单的实现效果很好,但是随着表面变得越来越复杂,我需要一种更健壮的方式来表示对象。这些强大的要求之一是确定两条线的交点,以便我可以通过某种图形指示分离。

所以我的问题是,任何人都可以提出一种方法来做到这一点吗?也许使用不同的技术(也许是 GraphViz)或算法?

0 投票
3 回答
14014 浏览

image - How to draw ARGB bitmap using GDI+?

I have valid HBITMAP handle of ARGB type. How to draw it using GDI+?

I've tried method:

But it doesn't use alpha channel.