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));
                }
            }
        }
Beispiel #3
0
 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));
     }
 }