Beispiel #1
0
        void RepositionTip(PointerBorder pointer)
        {
            DataValue data = pointer.Data;

            double availableHeight = this.ActualHeight;
            double value           = data.Y;
            Point  scaled          = scaleTransform.Transform(new Point(data.X, data.Y));

            scaled = zoomTransform.Transform(scaled);
            double offset       = Canvas.GetLeft(Graph);
            double x            = scaled.X + offset;
            double y            = availableHeight - scaled.Y;
            double tipPositionX = x;

            if (tipPositionX + PointerBorder.ActualWidth > this.ActualWidth)
            {
                tipPositionX = this.ActualWidth - PointerBorder.ActualWidth;
            }
            double tipPositionY = y - PointerLabel.ActualHeight - 4;

            if (tipPositionY < 0)
            {
                tipPositionY = 0;
            }
            pointer.Margin = new Thickness(tipPositionX, tipPositionY, 0, 0);

            pointer.Pointer.RenderTransform = new TranslateTransform(x, y);
        }
Beispiel #2
0
        void ShowTip(string label, Point pos, DataValue data = null)
        {
            PointerLabel.Text = label;
            PointerBorder.UpdateLayout();

            double offset       = Canvas.GetLeft(Graph);
            double tipPositionX = pos.X;// + offset;

            if (tipPositionX + PointerBorder.ActualWidth > this.ActualWidth)
            {
                tipPositionX = this.ActualWidth - PointerBorder.ActualWidth;
            }
            double tipPositionY = pos.Y - PointerLabel.ActualHeight - 4;

            if (tipPositionY < 0)
            {
                tipPositionY = 0;
            }
            PointerBorder.Margin     = new Thickness(tipPositionX, tipPositionY, 0, 0);
            PointerBorder.Visibility = System.Windows.Visibility.Visible;
            PointerBorder.Data       = data;

            Point pointerPosition = pos;

            Pointer.RenderTransform = new TranslateTransform(pointerPosition.X, pointerPosition.Y);
            Pointer.Visibility      = System.Windows.Visibility.Visible;

            LockTooltipMenuItem.IsEnabled = true;
        }
 private void RepositionTips()
 {
     foreach (UIElement child in AdornerCanvas.Children)
     {
         PointerBorder pointer = child as PointerBorder;
         if (pointer != null)
         {
             RepositionTip(pointer);
         }
     }
 }
Beispiel #4
0
        void ShowTip(string label, Point pos, DataValue data = null)
        {
            PointerLabel.Text = label;
            PointerBorder.UpdateLayout();

            double tipPositionX = pos.X;

            if (tipPositionX + PointerBorder.ActualWidth > this.ActualWidth)
            {
                tipPositionX = this.ActualWidth - PointerBorder.ActualWidth;
            }
            double tipPositionY = pos.Y - PointerLabel.ActualHeight - 4;

            if (tipPositionY < 0)
            {
                tipPositionY = 0;
            }

            Size closeBoxSize = CloseBox.DesiredSize;

            if (tipPositionX == this.ActualWidth - PointerBorder.ActualWidth && tipPositionY < closeBoxSize.Height)
            {
                tipPositionX -= closeBoxSize.Width;
            }

            PointerBorder.Margin     = new Thickness(tipPositionX, tipPositionY, 0, 0);
            PointerBorder.Visibility = System.Windows.Visibility.Visible;
            PointerBorder.Data       = data;

            Point pointerPosition = pos;

            Pointer.RenderTransform = new TranslateTransform(pointerPosition.X, pointerPosition.Y);
            Pointer.Visibility      = System.Windows.Visibility.Visible;

            LockTooltipMenuItem.IsEnabled = true;

            if (PointerMoved != null)
            {
                PointerMoved(this, data);
            }
        }
        private void OnLockTooltip(object sender, RoutedEventArgs e)
        {
            // we lock the tooltip by cloning the existing tooltip objects.

            /*
             * <Path x:Name="Pointer" Fill="{StaticResource TooltipForeground}" Data="M0,-5 L 5,0 0,5 -5 0z" Visibility="Collapsed"/>
             * <Border x:Name="PointerBorder"  Visibility="Collapsed" Padding="2" HorizontalAlignment="Left" VerticalAlignment="Top" BorderThickness="1"
             *      CornerRadius="3" BorderBrush="{StaticResource TooltipForeground}" Background="#80303030">
             *  <TextBlock x:Name="PointerLabel" Foreground="{StaticResource TooltipForeground}"/>
             * </Border>
             */
            Path ptr = new Path()
            {
                Fill            = Pointer.Fill,
                Data            = Pointer.Data.Clone(),
                RenderTransform = Pointer.RenderTransform.Clone()
            };

            AdornerCanvas.Children.Add(ptr);

            PointerBorder ptrBorder = new PointerBorder()
            {
                Padding             = PointerBorder.Padding,
                HorizontalAlignment = PointerBorder.HorizontalAlignment,
                VerticalAlignment   = PointerBorder.VerticalAlignment,
                BorderThickness     = PointerBorder.BorderThickness,
                CornerRadius        = PointerBorder.CornerRadius,
                BorderBrush         = PointerBorder.BorderBrush,
                Background          = PointerBorder.Background,
                Margin  = PointerBorder.Margin,
                Data    = PointerBorder.Data,
                Pointer = ptr,
            };

            ptrBorder.Child = new TextBlock()
            {
                Foreground = PointerLabel.Foreground, Text = PointerLabel.Text
            };
            AdornerCanvas.Children.Add(ptrBorder);
        }
Beispiel #6
0
        void RepositionTip(PointerBorder pointer)
        {
            DataValue data         = pointer.Data;
            Point     pt           = GetScaledValue(data);
            double    offset       = Canvas.GetLeft(Graph);
            double    x            = pt.X + offset;
            double    y            = pt.Y;
            double    tipPositionX = x;

            if (tipPositionX + PointerBorder.ActualWidth > this.ActualWidth)
            {
                tipPositionX = this.ActualWidth - PointerBorder.ActualWidth;
            }
            double tipPositionY = y - PointerLabel.ActualHeight - 4;

            if (tipPositionY < 0)
            {
                tipPositionY = 0;
            }
            pointer.Margin = new Thickness(tipPositionX, tipPositionY, 0, 0);

            pointer.Pointer.RenderTransform = new TranslateTransform(x, y);
        }