在WPF中绘制样式线

时间:2013-01-27 08:23:56

标签: c# wpf geometry customization

使用 WPF几何,是否有任何方法可以在点之间创建线,给定一个简单的几何作为线型?我知道有可能做出这样的界限:

-- -- --- --

但我想使用任何简单的几何体(例如:'^'符号)来制作线条。所以我想要的是这样的东西:(线可能不一定是水平的或垂直的):

^^^^^^^^^^^^^^^^^    
*****************

注意:我不想与某些字符对齐。我想使用任意几何形状(例如:开始形状,三角形或任何其他几何形状)来做它。换句话说,我想沿两点之间的线性路径重复一些几何。因此,这些简单的几何形状可能会以某种方式旋转,以跟随线...

2 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望基本上使用*^!作为一行。而不是使用正常的实线,破折号,点线等,你想使用物理角色吗?但是你希望这些角色成为Geometry对象。

您可以执行以下操作:

// Create a line of characters.
string lineString = "^^^^^^^^^^^^^^";

// Create Formatted Text, customize accordingly.
FormattedText formatText = new FormattedText(
     lineString, CultureInfo.GetCultureInfo("en-us"),
     FlowDirection.LeftToRight,
     new Typeface("Arial"), 32, Brushes.Black);

// Set the Width and Height.
formatText.MaxTextWidth = 200;
formatText.MaxTextHeight = 100;

// You can obviously add as many customization's and outputs of your choice.

现在我知道这不是你想要的,你希望上面的stringGeometry中行动。要做到这一点;你只需要这样做:

// Build Geometry object to represent text.
Geometry lineGeometry = formatText.BuildGeometry(new System.Windows.Point(0, 0));

// Tailor Geometry object that represents our item.
Geometry hGeo = formatText.BuildHighlightGeometry(new System.Windows.Point(0, 0));

现在基本上你已经构建了一个代表“^^^^^^^^”的Geometry对象。

希望我理解正确,我不知道这是否能解决你的问题。

答案 1 :(得分:1)

我认为这是一个有趣的问题,但我无法在stackoverflow文本框中找到令人满意的答案,所以我在github上传了一个建议的解决方案:

https://github.com/mrange/CodeStack/tree/master/q14545675/LineGeometry

我不是声称这是对您的问题的100%解决方案(对于一个我不是所有要求的100%)但是如果你看一下它或许可以改进一些东西。

除非我对你要找的东西错了。