// Capture the mouse event and hit test the coordinate point value against // the child visual objects. void MyVisualHost_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { // Retreive the coordinates of the mouse button event. if (selectedVisual != null) selectedVisual.Opacity = 1.0; selectedVisual = null; }
private MyDrawingVisual CreateDrawingVisualROIs(KeyValuePair<string, Point> ptInfo) { MyDrawingVisual drawingVisual = new MyDrawingVisual(); drawingVisual.StartPos = ptInfo.Value; DrawingContext drawingContext = drawingVisual.RenderOpen(); drawingVisual.Name = ptInfo.Key; Point pos = ptInfo.Value; int sz = 10; Point ptUp = new Point(pos.X, pos.Y- sz); Point ptRight = new Point(pos.X + sz, pos.Y); Point ptDown = new Point(pos.X, pos.Y + sz); Point ptLeft = new Point(pos.X - sz, pos.Y); #region draw anchors for calibration if (m_IsCalibrating) { string s = string.Format("M {0},{1} L {2},{3} {4},{5} {6},{7} {8},{9}", ptUp.X, ptUp.Y, ptLeft.X, ptLeft.Y, ptDown.X, ptDown.Y, ptRight.X, ptRight.Y, ptUp.X, ptUp.Y); Brush anchorFill = Brushes.YellowGreen; Brush anchorBorder = Brushes.Black; anchorBorder = Brushes.Red; anchorFill = Brushes.LightGreen; int index = int.Parse(GetNumber(ptInfo.Key)); FormattedText text = new FormattedText(index.ToString(), CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface("SimSun"), 16, Brushes.Black); if (drawingVisual.Name.IndexOf(stringResUtility.ROITopLeft) != -1) drawingContext.DrawText(text, new Point(pos.X + 10, pos.Y)); Geometry geometry = Geometry.Parse(s); drawingContext.DrawGeometry(anchorFill, new Pen(anchorBorder, 2), geometry); } #endregion drawingContext.Close(); return drawingVisual; }
internal void onMouseUp() { if (selectedVisual != null) selectedVisual.Opacity = 1.0; selectedVisual = null; ReleaseMouseCapture(); }
private MyDrawingVisual CreateDrawingVisualMarker(KeyValuePair<string, Point> ptInfo, bool bHigh) { MyDrawingVisual drawingVisual = new MyDrawingVisual(); DrawingContext drawingContext = drawingVisual.RenderOpen(); drawingVisual.StartPos = ptInfo.Value; drawingVisual.Name = ptInfo.Key; Point pos = ptInfo.Value; Point ptUp = new Point(pos.X - 10, pos.Y - 10); Point ptDown = new Point(pos.X - 10, pos.Y + 10); Point ptRight = new Point(pos.X + 10, pos.Y); string s = string.Format("M {0},{1} {2},{3} {4},{5} {0},{1}", ptUp.X, ptUp.Y, ptDown.X, ptDown.Y, ptRight.X, ptRight.Y); Geometry geometry = Geometry.Parse(s); Brush brush = bHigh ? Brushes.Red : Brushes.SeaGreen; drawingContext.DrawGeometry(brush, new Pen(Brushes.Yellow, 1), geometry); drawingContext.Close(); return drawingVisual; }
// If a child visual object is hit, toggle its opacity to visually indicate a hit. public HitTestResultBehavior myCallback(HitTestResult result) { selectedVisual = null; if (result.VisualHit.GetType() == typeof(MyDrawingVisual)) { MyDrawingVisual hitViusal = (MyDrawingVisual)(result.VisualHit); ((DrawingVisual)result.VisualHit).Opacity = 0.2; selectedVisual = (MyDrawingVisual)result.VisualHit; } // Stop the hit test enumeration of objects in the visual tree. return HitTestResultBehavior.Stop; }