用System.Windows.Point+StreamGeometry画线,如何设置Point的格式(颜色、形状、大小)?

dust_dust 2014-09-03 11:39:11


要达到上图中的效果,该怎么做?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace line
{
/// <summary>
/// Window1.xaml 的交互逻辑
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private StreamGeometry BuildRegularPolygon(Point[] values, bool isClosed, bool isfilled)
{
StreamGeometry geometry = new StreamGeometry();

using (StreamGeometryContext ctx = geometry.Open())
{
ctx.BeginFigure(values[0], isfilled /* is filled */, isClosed /* is closed */);

for (int i = 1; i < values.Length; i++)
{
ctx.LineTo(values[i], true /* is stroked */, false /* is smooth join */);
}
}

return geometry;

}
private void myButtonClicked(object sender, EventArgs e) {


Point p6 = Point.Parse("234,789");
Point p1 = new Point(0, 0);
Point p2 = new Point(100,100);
Point p3 = new Point(235,344);
Point p4 = new Point(454,67);
Point p5 = new Point(36,455);
Point[] values = new Point[] { p1, p3, p5, p2, p4,p6 };
StreamGeometry theGeometry = BuildRegularPolygon(values, true, false);
// Create a StreamGeometry to use to specify myPath.
theGeometry.FillRule = FillRule.EvenOdd;
Path myPath = new Path();
myPath.Stroke = Brushes.Black;
myPath.StrokeThickness = 1;
myPath.Data = theGeometry;
grid1.Children.Add(myPath);

}
}
}
...全文
1096 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
I_LOVE_RMB 2017-05-03
  • 打赏
  • 举报
回复
请问您那个节点是怎么画上去的,我要做成有节点的效果谢谢
vbfool 2014-09-05
  • 打赏
  • 举报
回复
http://pan.baidu.com/s/1bnrPlL1 这是我写的一个例子,你看看这个思路能不能用。
dust_dust 2014-09-05
  • 打赏
  • 举报
回复
引用 5 楼 vbfool 的回复:
如果你还需要响应拖动,那么那些节点需要是Shape才行。
能具体给一些参考资料吗?比如怎么画一个小矩形作为点,然后拖动他,和另外一个小矩形用直线连接
vbfool 2014-09-05
  • 打赏
  • 举报
回复
引用 8 楼 shaode0101 的回复:
我用vs2010打开都是说“”选择的文件是解决方案,但是用此应用程序的较新版本创建的,无法打开“,怎么办 [quote=引用 7 楼 vbfool 的回复:] http://pan.baidu.com/s/1bnrPlL1 这是我写的一个例子,你看看这个思路能不能用。
[/quote] 改用vs2012打开,或者装个SharpDeveloper也可以打开。
dust_dust 2014-09-05
  • 打赏
  • 举报
回复
我用vs2010打开都是说“”选择的文件是解决方案,但是用此应用程序的较新版本创建的,无法打开“,怎么办
引用 7 楼 vbfool 的回复:
http://pan.baidu.com/s/1bnrPlL1 这是我写的一个例子,你看看这个思路能不能用。
vbfool 2014-09-04
  • 打赏
  • 举报
回复
如果你还需要响应拖动,那么那些节点需要是Shape才行。
exception92 2014-09-04
  • 打赏
  • 举报
回复
只能说 估计目前达不到吧,除非使用第三方控件。
Veary 2014-09-04
  • 打赏
  • 举报
回复
围观绑定兼学习
dust_dust 2014-09-03
  • 打赏
  • 举报
回复
类似的问题还在这里发了http://bbs.csdn.net/topics/390876316 所以一共八十分,拜托各位了
dust_dust 2014-09-03
  • 打赏
  • 举报
回复
后续还要实现用鼠标点击上面的点实现拖动效果,所以请各位尽量综合考虑一下,拜托啦

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧