private void AddEllipseItem(EllipseItem item) { this.Dispatcher.Invoke( System.Windows.Threading.DispatcherPriority.Send, new AddEllipsDelegate(InvokeAddEllipseItem), item); }
private void InvokeAddEllipseItem(EllipseItem item) { if (!items.Contains(item)) { ToolTip tt = new ToolTip(); tt.Content = StringFormat.FormatString(item.Value.ToString(), 80); items.Add(item); Ellipse result = new Ellipse(); result.ToolTip = tt; result.Width = item.Width; result.Height = item.Height; result.Stroke = Brushes.Black; result.StrokeThickness = 1; result.Fill = Brushes.LightCyan; if (item.IsPrime) { result.Fill = Brushes.LightGreen; } Canvas.SetLeft(result, item.X); Canvas.SetTop(result, item.Y); if (item.Y > PaintArea.Height - item.Height) { PaintArea.Height = item.Y + m_Manager.ItemSize * 2; } if (item.X > PaintArea.Width - item.Width) { PaintArea.Width = item.X + m_Manager.ItemSize * 10; } m_MapEllipseItems.Add(result, item); PaintArea.Children.Add(result); Label l = new Label(); string lContent = item.Value.ToString(); if (lContent.Length > 7) { lContent = lContent.Substring(0, 6); lContent += "..."; } l.Content = lContent; l.ToolTip = tt; Canvas.SetLeft(l, item.X + item.Width); Canvas.SetTop(l, item.Y); PaintArea.Children.Add(l); if (item.Parent != null) { AddConnector(new EllipseConnector(item.Parent, item)); } } }
private void DrawEllipse(XGraphics gfx, EllipseItem ellipse) { if (ellipse.IsFilled) { var pen = new XPen(XColor.FromArgb(ellipse.Stroke.Alpha, ellipse.Stroke.Red, ellipse.Stroke.Green, ellipse.Stroke.Blue), X(ellipse.StrokeThickness == 0.0 ? XUnit.FromMillimeter(defaultStrokeThickness).Value : ellipse.StrokeThickness)) { LineCap = XLineCap.Round }; var brush = new XSolidBrush(XColor.FromArgb(ellipse.Fill.Alpha, ellipse.Fill.Red, ellipse.Fill.Green, ellipse.Fill.Blue)); gfx.DrawEllipse(pen, brush, X(ellipse.X), Y(ellipse.Y), X(ellipse.Width), Y(ellipse.Height)); } else { var pen = new XPen(XColor.FromArgb(ellipse.Stroke.Alpha, ellipse.Stroke.Red, ellipse.Stroke.Green, ellipse.Stroke.Blue), X(ellipse.StrokeThickness == 0.0 ? XUnit.FromMillimeter(defaultStrokeThickness).Value : ellipse.StrokeThickness)) { LineCap = XLineCap.Round }; gfx.DrawEllipse(pen, X(ellipse.X), Y(ellipse.Y), X(ellipse.Width), Y(ellipse.Height)); } }