问题标签 [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.
gdi+ - 如何确定 GraphicsPath PathPoints 和 PathTypes 数组中弧的端点?
我有以下 PathPoints 和 PathTypes 数组(格式:X、Y、Type):
这是此 GraphicsPath 的物理外观。2 条弧线非常容易区分:
我知道这个 GraphicsPath.PathData 数组是由 2 个 AddArc 命令创建的。单步调试调试器中的代码,我看到前 4 个 PathData 值是由第一个 AddArc 命令添加的,其余 6 个点是由第二个 AddArc 命令添加的。
通过检查原始路径点/路径类型数组(以前不知道它是 2 个 AddArc 命令,所以我知道我有 2 个起点和终点),我想确定每个弧的起点和终点。
我已经尝试了几种贝塞尔计算来“重新创建”数组中的点,但是无法确定如何确定单独的起点和终点。似乎 GDI+ 正在组合弧之间的起点/终点(它们是相同的点并且弧是连接的),而我正在失去一个弧正在结束而另一个弧正在开始的事实。
有任何想法吗?
.net - .NET GDI+:用圆角绘制线条
给定一个点数组,很容易根据这些点画一条线,例如使用 GraphicsPath 类。
例如,以下点数组...
...描述一条类似于 Z 的线。
但挑战来了;我需要绘制半径为 10 像素的圆角。我所说的角是指线中不是起点或终点的点。(0,100)
在这种情况下,在和处有两个角(100,0)
。
我玩过贝塞尔曲线、曲线和弧线,其中一些可能是解决方案 - 我自己还没有找到它,因为我必须能够处理以所有角度绘制的线,而不仅仅是水平线或垂直线。
将对象的 设置为LineJoin
是不够的,因为这只显示更宽的笔。Pen
Round
编辑:澄清一下,我很清楚 GraphicsPath 类的贝塞尔曲线、曲线和圆弧功能。我正在寻找一些关于构建可以获取任意数量点的算法的更具体的建议,并将它们与圆角串在一起。
解决方案
我把下面的函数放在一起,它返回一个代表圆角线的路径。该函数使用 LengthenLine 函数,可以在此处找到。
python - GraphicsPath 并不总是自我刷新
此应用程序中的简单曲线仅在将其拖出屏幕或调整窗口大小时才会出现。当应用程序刚启动时它不会出现,当窗口最大化或最小化时它也会消失。但是,所有这些时间都打印了“Path Drawn”,因此调用了所有的绘制函数。关于在图形上下文上创建和绘图,我做错了什么吗?如果没有,在这些特殊情况下如何使窗口完全刷新?
c# - c#中动态删除/添加(取消删除)表单区域
如何使用区域和图形路径类动态删除/添加(取消删除)表单区域
arrays - IronPython:创建点数组并将其添加到 GraphicsPath
问候;
我在正确实例化 System.Drawing.Point 实例数组,然后在 WinForms 应用程序中使用 IronPython 将点数组添加到 GDI+ GraphicsPath 实例时遇到了一些麻烦。以下代码在 SharpDevelop 3.2 和 IronPython 2.6 下正确编译或构建:
根据上面的代码,我希望看到两条垂直的蓝线,每条线的末端都有一个小椭圆。使用上面的当前 scipting 代码,绘制了 GDI+ 运行时错误红色 X。我错过了什么或做错了什么?此外,是否有更简单或更简洁的方法来实例化 System.Drawing.Point 值的数组?
提前感谢您的时间和帮助...
winforms - 如何从包含“轮廓”的路径创建剪辑区域?
我正在创建一个圆角矩形 GraphicsPath(请参见下面的红色轮廓图),然后在绘制图形时将其用作剪辑区域,并用作表单的区域。
不幸的是,虽然路径看起来不错,但它不能作为一个区域很好地工作(见下面的纯黑色图像)
有没有一种方法可以从包含路径的所有“轮廓”像素的路径生成剪切区域?我是否需要生成位图,然后对其进行处理以创建区域?
圆角矩形路径:
用作剪辑区域时:
差异(红色像素在路径轮廓中,但在区域之外。蓝色像素在两者中):
geometry - 多边形三角剖分的反面是什么?
完成 2D 三角剖分后,一些三角形具有相同的颜色,我想重新组合它们以绘制类似颜色的图形路径。我发现如果我只是一个一个地绘制三角形,一些图形渲染器会显示三角形之间的接缝(至少在涉及抗锯齿和/或透明度的情况下)。
那么如何获取一组(非重叠)三角形并生成可能包含孔和不相交多边形的图形路径?
盲目地将三角形添加到图形路径实际上非常适合填充(当然不是用于描边),但是导出那些额外的内部点感觉不合适。
c# - GraphicsPath.IsClockWise() 扩展方法
GraphicsPath
我需要为确定GraphicsPath
是顺时针还是逆时针缠绕的对象创建一个扩展方法。
像这样的东西:
注意:我只是假设我们需要foreach
在GraphicsPath
这里的要点,但如果有更好的方法,请随时提供。
这样做的原因是因为确定相邻 GraphicsPath 的重叠部分是“填充”(FillMode
)还是“孔”()。但是,这仅在相邻的 GraphicsPath 沿相同方向缠绕时才成立。GraphicsPath
Winding
Alternate
如果两条路径以相反的方向缠绕,即使将 设置为 也会FillMode
导致Winding
(不需要的)孔。
有趣的是,GraphicsPath 确实有一种.Reverse()
方法可以改变路径的方向(这确实解决了问题),但是如果不知道路径的方向,就不可能知道何时需要反转 GraphicsPath。
你能帮忙解决这个扩展方法吗?
c# - 在 C# 中使用 GEO 坐标绘制地图
他,
我想用 C# 绘制一个带有 LAT/LNG 坐标的 Countrymap。我必须将 lat/lng 转换为像素,最好的方法是什么?我可以绘制“地图”,但它非常小,而且不在窗口的中心。
有人可以帮忙吗?我有这个代码:
c# - C# 中的 GraphicsPath 多边形拟合
我需要将任意形状的 GraphicsPath“适配”到定义的空间中(几乎总是矩形或圆形)。
我目前使用 Matrix 对象缩放 GraphicsPath 并且缩放工作正常,但问题是获取比例因子。
我能想到的最好的技术是将 GraphicsPath 转换为区域,将 Rectangle 或 Circle 转换为区域,然后执行:
然后检查是否:
但是,这只是告诉我形状是否太大而无法容纳,并且有必要将形状缩放得更小,然后再试一次(可能很多次)。
有没有一种简单的方法可以立即计算缩放因子以适合多边形 GraphicsPath,使其完全适合圆形。结果应该是仍然完全适合圆的最大多边形。