问题标签 [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.
c# - 我可以将区域设置为对角线吗?
我昨天从某人那里了解到图形路径和矩形边缘以及如何设置内部排除矩形。
但现在我只想使对角线无效:
目前我正在将这两个点转换为一个矩形并使其无效。但这可以更好吗?
c# - 改进 Winforms 中的命中测试;GraphicsPath.IsVisible 的任何替代方案?
在自定义控件上,我有一系列应根据给定打开的 LED 对象GraphicsPath
(例如,见下图)。目前我正在使用graphicsPath.IsVisible(ledPoint)
,但是由于我有很多 LED,因此通过所有 LED 的迭代可能非常缓慢,尤其是在路径复杂的情况下(例如示例中路径的倒数)。
你们中的任何人有什么想法可以更聪明地加速迭代吗?如果举个例子太复杂,它可能会将我重定向到适当的资源。请考虑该控件位于 GDI+ 中,因此不能选择重新设计到另一个引擎中。
编辑
在我的 PC (i7 3.6GHz) 上,当GraphicsPath
我只有一个简单的 100x100 像素矩形,然后我在我的控件上计算逆,它的大小约为 500x500 像素(因此,结果GraphicsPath
将是一个 500x500 的矩形,带有一个“孔” 100x100),测试 6000 个 LED 大约需要 1.5 秒,这会太大影响用户体验。
在 Matthew Watson 回复之后,我将详细介绍我的示例:
在我的 PC 上,第一次测试大约 725 毫秒,第二次测试大约 5000 毫秒。这只是一条相当简单的路径。GraphicsPath
是由用户的鼠标移动生成的,用户可以执行多种路径组合(反转、联合、交叉......我为此使用GPC )。因此,通过测试 的否定来测试反转GraphicsPath.IsVisible()
可能会很棘手。
inversePath
返回的 from非常Utility.CombinePath
简单,有以下几点(左PathPoints
、右PathTypes
):
c# - 是否可以在 C# 中使用 GDI 实现斜面文本和阴影?
我正在寻找扩展我的“简单”摄影事件系统,以添加向我们拍摄的图像添加自定义文本的功能。从技术上讲,我使用现有的图片框控件来显示图像和一个可以在其中输入文本的文本框,这将被添加到正在显示的图像中。
然而,作为一名摄影师,我希望文本看起来更好一点,因此我希望模仿我在 Photoshop 中可以做的事情,即斜角/浮雕,为文本添加内部发光和阴影,但我正在挣扎找到对此的任何参考。
我可能只是受制于我正在使用 winforms 的事实,这可能通过 WPF 可以实现,但 WPF 并不是关于我何时停止成为某个职业的程序员并因此坚持我所知道的技术......我' m 在系统中也太远了,无法在 WPF 中重新编写它,所以如果它是一个限制,我将只考虑添加预先确定的覆盖而不是我知道我可以实现的自定义文本。
我到目前为止的代码如下,任何关于如何扩展它以执行斜面/浮雕、发光等的提示将不胜感激。
c# - 从图像生成颜色范围选择
我有一个图像,我想GraphicsPath
根据构成图像的像素的某种阈值在图像上创建一个表示选择。例如,一种颜色范围算法考虑了颜色值接近给定颜色的像素。
我目前的问题不是选择像素的算法,而是GraphicsPath
我当前的代码变得过于复杂(点太多),因此创建它特别是进一步管理它的时间成本很高。
目前我只是简单地使用下面的代码(在这个例子中我只是取不透明的像素),我Rectangle
为每个取的像素添加一个。
如何简化此过程或结果GraphicsPath
以获得更简单的路径,理想情况下只有轮廓?
编辑 然后我将使用路径:在屏幕上显示其轮廓(运行蚂蚁);将其用作其他图像的遮罩(取消路径中的内容);做命中测试(一个点是否在路径内)。举个例子:
c# - C# GraphicsPath AddPolygon FillPath 别名
我得到了一大串分数,保证它是一个有效的“形状”,比如星星、新月,任何东西。最后一点总是等于第一点。它每次都画得很好,但混叠很讨厌。我尝试了很多东西,但没有以红色以外的任何颜色绘制的像素。图形对象来自仅初始化然后以背景颜色“清除”运行的图像。
我想做我自己的自定义抗锯齿https://en.wikipedia.org/wiki/Spatial_anti-aliasing但我对最后一行感到困惑
我不明白“颜色百分比(范围 0-1))”。如果我的前景色是纯红色,背景是纯绿色,那会是什么样子?
c# - C# 从直线到用户输入图形路径的最长距离
我有一个由 PointF 数组(通过鼠标单击创建)定义的 GraphicsPath,它由 Graphics.DrawCurve 绘制。然后变换路径以将起点和终点旋转到 0 度。转换和旋转的曲线(和原始曲线)PointF 数组仍然可用。
我需要找到从路径的直线端点到曲线本身的最长垂直距离。
因为我已经旋转了曲线,所以找到最长的距离应该与边界的高度相同......但我还需要知道 0 轴沿(现在是什么)的距离是多少(如果我可以找到曲线)。我进行了广泛搜索-我尝试了自定义样条函数以尝试沿曲线获得更多固定点,但这最终以相同的结果结束-我不知道点之间的曲线是什么,那就是考虑到点之间的插值,90% 可能是这种情况。
现在它已经旋转了,我尝试了一个 for 循环来计算顶部,并在每一列中,尝试查看 IsVisible 下的每个点是否针对转换后的路径,但它总是返回 false。
输入点(参考):{X=499,Y=64} {X=305,Y=117} {X=149,Y=114}
(从左到右,我知道我需要做一些检查以查看它们将来输入的方式,但现在,只是想让它工作)
我唯一能想到的另一件事是基于边界创建一个新的位图,重新绘制曲线,然后逐列获取像素颜色,直到它与绘制曲线的颜色相匹配。
希望有人有比这更好的解决方案。
c# - 测试可能非常密集的路径
我正在开发一个显示许多线段的 UserControl。这是通过 GraphicsPath 完成的。
当用户移动鼠标时,会进行一次命中测试以检查它是否在任何线段上,光标会相应地更改,然后可以单击该线。
只要片段很少(如左例所示),它就可以正常工作并且有意义。
但是当片段越来越多时,hittest 变得毫无意义,当然也很慢(在示例中,有 75、750 和 2500 个片段)。
如果路径变得“密集”,我可以使用什么策略来避免无用的测试并简化路径?
线段是未知的模式,它们可能不是明显的矩形轮廓,但总是像示例图像中的某种数据图表。