添加文字的方法:
TextBlock txt = new TextBlock(); txt.Text = tmc; txt.FontSize = 12; txt.Foreground = t_brush; txt.FlowDirection = FlowDirection.LeftToRight; // double tt_angle = this.GetAngle(eb, ee); double t_angle = tt_angle; t_angle = t_angle * 180.0 / this.PI; if (t_angle >= 360) { t_angle -= 360; } t_angle = 360 - t_angle; //修正用于顺时针rotate方向 //RotateTransform //SkewTransform RotateTransform rt = new RotateTransform(); rt.Angle = t_angle; //顺时针rotate方向 rt.CenterX = 0; rt.CenterY = 0; txt.RenderTransform = rt; txt.RenderTransformOrigin = new Point(t_atP.X, t_atP.Y); // txt.SetValue(Canvas.LeftProperty, t_atP.X); txt.SetValue(Canvas.TopProperty, t_atP.Y); // this.cRoot.Children.Add(txt); //----
添加直线的方法:
Brush t_brush=new SolidColorBrush(this.LineColor); // double p_sx = this.wfView.MapToScreen_X((double)rt_t.SX); double p_sy = this.wfView.MapToScreen_Y((double)rt_t.SY); // double p_ex = this.wfView.MapToScreen_X((double)rt_t.EX); double p_ey = this.wfView.MapToScreen_Y((double)rt_t.EY); // PointD eb = new PointD(); eb.X = (double)rt_t.SX; eb.Y = (double)rt_t.SY; PointD ee = new PointD(); ee.X = (double)rt_t.EX; ee.Y = (double)rt_t.EY; //画线(用面对象只添加两个点来完成) Polygon t_line = new Polygon(); // t_line.Points.Add(new Point(p_sx, p_sy)); t_line.Points.Add(new Point(p_ex, p_ey)); // t_line.Points.Add(new Point(p_sx, p_sy)); // //t_line.StrokeThickness = 2; //t_line.Opacity = 0.5; //t_line.Width = 2; t_line.Stroke = t_brush; t_line.Fill = t_brush; // this.cRoot.Children.Add(t_line);
添加图片和矩形框的方法:
BitmapImage img = new BitmapImage(); img.CreateOptions = BitmapCreateOptions.None; string path = "/AppSilverlight;component/WorkFlowNodeImageDir/png/" + t; Stream s = Application.GetResourceStream(new Uri(path, UriKind.Relative)).Stream; img.SetSource(s); // Image ui_img = new Image(); ui_img.Source = img; //计算节点左上角坐标 double top_x = (int)p_x; top_x = top_x - img.PixelWidth / 2; double top_y = (int)p_y; top_y = top_y - img.PixelHeight / 2; // ui_img.SetValue(Canvas.LeftProperty, top_x); ui_img.SetValue(Canvas.TopProperty, top_y); this.cRoot.Children.Add(ui_img); // //画节点外边框 { Rectangle rect = new Rectangle(); rect.Stroke = t_Brush; rect.Fill = new SolidColorBrush(Colors.Transparent); rect.SetValue(Canvas.LeftProperty, top_x); rect.SetValue(Canvas.TopProperty, top_y); rect.Width = img.PixelWidth; rect.Height = img.PixelHeight; this.cRoot.Children.Add(rect); } } //添加节点名称 { //画节点名称 string actmc = rt_act.ACTMC; TextBlock txt = new TextBlock(); txt.Text = actmc; txt.FontSize = 12; txt.Foreground = t_Brush; char[] longLine = actmc.ToCharArray(); //修正节点名称显示位置 double t_txtLen = longLine.Length / 2.0; t_txtLen = t_txtLen * txt.FontSize; // double x = p_x - t_txtLen; double y = p_y + 24 + 0; txt.SetValue(Canvas.LeftProperty, x); txt.SetValue(Canvas.TopProperty, y); // this.cRoot.Children.Add(txt);
时间: 2024-10-11 06:47:21