WEB开发网
开发学院图形图像Flash 使用silverlight构建一个工作流设计器(六) 阅读

使用silverlight构建一个工作流设计器(六)

 2009-05-05 12:06:39 来源:WEB开发网   
核心提示:最新源代码下载:http://shareidea.net/opensource.htm最新版本在线演示:http://www.shareidea.net/workflow.htm本章继续美化工作,本章内容相当简单,使用silverlight构建一个工作流设计器(六),权当一段流水账好了,下一章的内容将增加一个非常优秀的

最新源代码下载:http://shareidea.net/opensource.htm

最新版本在线演示:http://www.shareidea.net/workflow.htm

本章继续美化工作,本章内容相当简单,权当一段流水账好了。下一章的内容将增加一个非常优秀的用户体验功能,这个功能也是受到网友的启发增加的,敬请关注。

五 美化

本章内容主要包括

1、 规则图形支持曲线

2、 增加默认初始化流程图形

3、 支持鼠标双击事件

4、 控件支持ToopTip

5、   自定义容器宽和高

5.4 规则图形支持曲线

在前面的内容中,用来表示规则类的图形一条直线,当有两个规则互为反向规则时(这两个规则的起始活动和结束活动正好对调),那么这两个规则的直线就重叠在一起了,不好区别。所以在这里把这个直线改为曲线。用下图来表示这个改变 :

使用silverlight构建一个工作流设计器(六)

需要做几个工作,首先在规则类(Rule.xaml)中,把表示直线类(Line)换成表示曲线的类Polyline,在前面的内容中,我们使用两个点来定位直线,在换成新的Polyline类后,这部分代码不需要做大的改变,只需要在增加一个中间点,这个中间点表示曲线的转折点,而这个转折点的坐标可以根据起始坐标和终点坐标而定,非常简单。下面的代码表示了我们新的定位规则曲线的方法。

public void SetRulePosition(Point beginPoint, Point endPoint)
        {
            begin.SetValue(Canvas.LeftProperty, beginPoint.X);
            begin.SetValue(Canvas.TopProperty, beginPoint.Y);

            end.SetValue(Canvas.LeftProperty, endPoint.X);
            end.SetValue(Canvas.TopProperty, endPoint.Y);  

            Point p1 = new Point(beginPoint.X + beginPointRadius, beginPoint.Y + beginPointRadius);
            Point p3 = new Point(endPoint.X + endPointRadius, endPoint.Y + endPointRadius);

            Point p2 = new Point();

            if (LineType == RuleLineType.Line)
            {
                p2 = p1;
            }
            else
            {
                if (System.Math.Abs(p1.X - p3.X) < 10)
                {
                    p2 = p1;
                }
                else
                {
                    p2.X = p1.X;
                    p2.Y = p3.Y; 
                    
                }
            } 
            line.Points.Clear();  
            line.Points.Add(p1);
            line.Points.Add(p2);
            line.Points.Add(p3);  
        }

1 2 3  下一页

Tags:使用 silverlight 构建

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接