/// <summary> /// Snaps a stroke thickness to device pixels if required by the edge rendering mode. /// </summary> /// <param name="strokeThickness">The stroke thickness.</param> /// <param name="edgeRenderingMode">The edge rendering mode.</param> /// <returns>The processed stroke thickness.</returns> private double GetActualStrokeThickness(double strokeThickness, EdgeRenderingMode edgeRenderingMode) { switch (edgeRenderingMode) { case EdgeRenderingMode.PreferSharpness: return(PixelLayout.SnapStrokeThickness(strokeThickness, this.DpiScale)); default: return(strokeThickness); } }
/// <summary> /// Snaps a rectangle to device pixels if required by the edge rendering mode. /// </summary> /// <param name="rect">The rectangle.</param> /// <param name="strokeThickness">The stroke thickness.</param> /// <param name="edgeRenderingMode">The edge rendering mode.</param> /// <returns>The processed rectangle.</returns> private Rect GetActualRect(OxyRect rect, double strokeThickness, EdgeRenderingMode edgeRenderingMode) { switch (edgeRenderingMode) { case EdgeRenderingMode.PreferGeometricAccuracy: case EdgeRenderingMode.PreferSpeed: return(ToRect(rect)); default: return(PixelLayout.Snap(ToRect(rect), strokeThickness, this.VisualOffset, this.DpiScale)); } }
/// <summary> /// Snaps points to pixels if required by the edge rendering mode. /// </summary> /// <param name="points">The points.</param> /// <param name="strokeThickness">The stroke thickness.</param> /// <param name="edgeRenderingMode">The edge rendering mode.</param> /// <returns>The processed points.</returns> private IEnumerable <Point> GetActualPoints(IList <ScreenPoint> points, double strokeThickness, EdgeRenderingMode edgeRenderingMode) { switch (edgeRenderingMode) { case EdgeRenderingMode.Adaptive when RenderContextBase.IsStraightLine(points): case EdgeRenderingMode.Automatic when RenderContextBase.IsStraightLine(points): case EdgeRenderingMode.PreferSharpness: return(points.Select(p => PixelLayout.Snap(p.X, p.Y, strokeThickness, this.VisualOffset, this.DpiScale))); default: return(points.Select(p => new Point(p.X, p.Y))); } }