void DrawLine(DrawingContext context, Point start, Point end, double distance, double time, bool mouseIsDown) { double speed = distance / time; double penThickness = GetPenThickness(speed); Color annotationColor = GetMouseAnnotationColor(mouseIsDown); SolidColorBrush arrowBrush = CachedBrushes.Get(annotationColor); if (penThickness > distance) { context.DrawEllipse(arrowBrush, null, GetCenterPoint(start, end), penThickness / 2, penThickness / 2); } else { Pen arrowPen = new Pen(arrowBrush, penThickness); context.DrawLine(arrowPen, start, end); } }
public void AnnotateScreenshot(DrawingContext context, ScreenGrab screenGrab) { Point clientPt = screenGrab.ToClientPoint(position); Color mouseAnnotationColor1 = Color.FromArgb(0xA0, 0xFF, 0x00, 0x00); SolidColorBrush annotationBrush = CachedBrushes.Get(mouseAnnotationColor1); context.DrawEllipse(annotationBrush, null, clientPt, 2.5, 2.5); context.DrawEllipse(Brushes.Black, null, clientPt, 0.7, 0.7); Color mouseAnnotationColor2 = Color.FromArgb(0x50, 0xFF, 0x00, 0x00); SolidColorBrush annotationBrush2 = CachedBrushes.Get(mouseAnnotationColor2); context.DrawEllipse(null, new Pen(annotationBrush2, 2), clientPt, 9, 9); Color mouseAnnotationColor3 = Color.FromArgb(0x30, 0xFF, 0x00, 0x00); SolidColorBrush annotationBrush3 = CachedBrushes.Get(mouseAnnotationColor3); context.DrawEllipse(null, new Pen(annotationBrush3, 1), clientPt, 16, 16); }
public void AnnotateScreenshot(DrawingContext context, ScreenGrab screenGrab) { Point start = screenGrab.ToClientPoint(StartPosition); Point end = screenGrab.ToClientPoint(EndPosition); bool mouseIsDownAtEnd = false; if (midPoints.Count > 1) { Point thisPoint = start; DateTime thisTime = Start; foreach (TimeMousePoint midPoint in midPoints) { DateTime nextTime = midPoint.Time; TimeSpan timeBetweenPoints = nextTime - thisTime; double time = timeBetweenPoints.TotalMilliseconds; Point nextPoint = screenGrab.ToClientPoint(midPoint.Point); double distance = GetDistanceBetweenPoints(thisPoint, nextPoint); if (thisPoint != nextPoint) { DrawLine(context, thisPoint, nextPoint, distance, time, midPoint.MouseIsDown); } if (mouseIsDownAtEnd != midPoint.MouseIsDown) { mouseIsDownAtEnd = midPoint.MouseIsDown; double radius; double thickness; if (mouseIsDownAtEnd) { radius = 6; thickness = 2; } else { radius = 6; thickness = 1; } Color annotationColor = GetMouseAnnotationColor(mouseIsDownAtEnd); SolidColorBrush mouseDownBrush = CachedBrushes.Get(annotationColor); Pen arrowPen = new Pen(mouseDownBrush, thickness); context.DrawEllipse(null, arrowPen, nextPoint, radius, radius); } thisPoint = nextPoint; thisTime = nextTime; } } else if (start != end) { TimeSpan timeBetweenPoints = Duration; double time = timeBetweenPoints.TotalMilliseconds; double distance = GetDistanceBetweenPoints(startPosition, endPosition); DrawLine(context, start, end, distance, time, mouseStartsDown); mouseIsDownAtEnd = mouseStartsDown; } Color lastEllipseColor = GetMouseAnnotationColor(mouseIsDownAtEnd); SolidColorBrush arrowBrush = CachedBrushes.Get(lastEllipseColor); context.DrawEllipse(arrowBrush, null, end, 4, 4); }