问题标签 [graphicspath]

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

c# - Region.IsVisible(PointF) 对于大浮点值的性能非常慢

我遇到了一个奇怪的性能问题,如果能解释一下我正在经历的行为,那就太好了。

我正在使用 System.Drawing.Region.IsVisible(PointF) 来确定一个点是否在多边形内。这通常工作得很好,但昨天我注意到如果多边形很复杂并且它由大的 x 和 y 值组成,IsVisible 方法的性能会变得非常慢。

下面是一些重现问题的代码(以及显示多边形形状的图像),对于大数组大小感到抱歉,但在问题出现之前,多边形需要非常复杂。

在原始点上调用 IsVisible 时,我的机器需要 460 651 毫秒才能完成,而当我首先将所有点除以 1000,然后调用该方法时,需要 1 毫秒。为什么我看到时间上有这么大的差异?我不认为浮点数的实际值会影响性能。

多边形的形状

0 投票
0 回答
337 浏览

c# - 使用 GDI+ 矩阵变换对 GraphicsPath 进行动态缩放

我正在尝试在 GraphicsPath 上实现动态缩放,用户在其中绘制一个矩形来定义缩放区域(请参阅下面代码中的 selectRect)。当用户释放鼠标时,GraphicsPath 被缩放并(通过矩阵)平移到正确的位置,以在“drawArea”定义的矩形中显示缩放区域。

目的是允许用户动态放大多次。

下面用于计算比例和平移值的代码在用户第一次缩放时完美运行。但是,任何后续缩放都不会产生预期的结果。

ConvertScreenToWorld()

绘图代码:(注意目的是保留原始路径数据,这就是我使用克隆的原因)

任何有关如何使其与累积缩放一起使用的建议将不胜感激。

0 投票
0 回答
321 浏览

c# - C# 使用 OpenTK 渲染 GraphicsPath

我正在用 C# 编程并使用 OpenTK(openGL 库)来渲染 3D。我有一个需要在 3D 空间中渲染的 System.Drawing.Drawing2D.GraphicsPath。到目前为止,我能够像这样渲染一个粗略的轮廓......

我的问题是如何填写 GraphicsPath 中的内容,有没有办法从 GraphicsPath 渲染贝塞尔曲线?如果有怎么办?

0 投票
1 回答
318 浏览

c# - 获取旋转的 GraphicsPath 中最左边的点

我创建一个 GraphicsPath 对象,添加一个椭圆,旋转 GraphicsPath 对象,然后绘制它。现在我想获取 graphicsPath 的最左边的点,这样我就可以检查它是否在特定的边界内(用户可以用鼠标移动 graphicsPath)。

我目前正在使用 GraphicsPath 中的 GetBounds() 方法,但这只会导致以下结果

图片.

蓝色是来自 GetBounds() 的矩形,因此您可以看出我从该方法获得的最左边的点与我想要的点之间有一些空间。我怎样才能得到我正在寻找的点?

0 投票
1 回答
477 浏览

c# - SkiaSharp 是否有与 System.Drawing 等效的 Flatten 方法?

我最近使用 SkiaSharp 遇到了障碍。我一直在将旧代码从 System.Drawing 移植到 SkiaSharp。GraphicsPath 类有一个 flatten 方法,可以将曲线转换为一系列连接的线段。

https://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.graphicspath.flatten(v=vs.110).aspx

我似乎找不到 SkiaSharp 的等效方法。SKPath Simplify 方法看起来有点模糊它的实际作用。在我的测试中,它似乎没有产生平坦的路径。

https://developer.xamarin.com/api/member/SkiaSharp.SKPath.Simplify()/

0 投票
1 回答
217 浏览

c# - 是列表在 C# 中可能吗?

我正在尝试使用 GraphicsPath 列表而不是数组,因为我不知道用户将创建的路径数。

在此之后,我填写列表如下:

但是当我尝试使用列表中的 GraphicsPath 时,虽然 Count 属性是正确的,但由于参数异常,我无法使用如下所示的对象。

是否与 GraphicsPath 被 Disposabe 相关?还是smt做错了?

0 投票
0 回答
454 浏览

c++ - GdiPlus :GraphicPath 中的区域而不填充它

我需要从 GraphicPath 获取 Gdi+ 区域而不填充它,我不知道该怎么做。

平局胜于言语,所以这就是我想做的:

我想做的事

  1. 我有一个椭圆,而不是我想显示为未填充(已知线宽)
  2. 我有一个完整的矩形,我希望它从椭圆中减去自己。
  3. 然后,我想得到椭圆,未填充,减去部分

所以,这是我的代码:

问题是我得到的实际上是这样的:

我得到什么

似乎从 GraphicPath 创建一个区域会自动填充该区域。是否可以从仅具有轮廓的 GraphicPath 获取区域?例如,通过给笔或线宽?

我已经阅读了有关 GraphicPath Widen 函数的内容,但它并没有真正做到我想要的。

奇怪的是,像这样简单的事情却做不到。

或者,也许我错过了什么!

感谢您的帮助,祝您有美好的一天。

亚历克斯。

0 投票
0 回答
298 浏览

c# - GraphicsPath.AddArc() C# 未按预期工作

我正在尝试使用 DXF 文件中的一些坐标创建一个GraphicsPath对象。我按以下顺序和值捕获坐标,如下所示:

我用来在GraphicsPath myPath对象中插入每一行和拱门的代码如下:

对于行:

对于拱门:

结果是以下 GraphicPath:(左边是结果,右边是预期的。)

在此处输入图像描述

这里的问题是,路径中忽略了拱门,即使正如我们在上面看到的,坐标匹配并且它们是以正确的顺序添加的。

有谁知道我能做些什么来解决这个问题?

0 投票
2 回答
153 浏览

c# - FreeShape 的编辑点 - 减少路径

我有一些 GUI 让用户绘制 costimized GraphicsPath。我使用 GraphicsPath AddLine 函数创建了它。

现在我想实现您在附加的 Microsoft Word 图像中看到的内容 - “编辑点”。

在此处输入图像描述

我面临几个问题:

  1. 我的路径有数百条“线”-> 每条只有一个像素大小。我只想选择“关键点”。我怎么做?这是“Flatten”的一种反转,找不到这样的功能。

  2. 是否有现有的 .Net 函数来绘制蓝色小矩形和路径周围的绿色小圆圈?每个选定点周围的矩形呢? 在此处输入图像描述

每一个帮助,即使是部分的,将不胜感激。

0 投票
1 回答
413 浏览

c# - WinForms:在正确的位置绘制路径

这是我在这里提出的一个问题的后续:WinForms: Measure Text With No Padding。问题是,鉴于此代码...

...为什么矩形不重叠?

在此处输入图像描述

显然,当我翻译路径时,我并没有使用稍后绘制它们的相同单位进行翻译,但我不知道如何修复它。有任何想法吗?