private void drawRotatedArrow(GraphicsPlus graphics) { Debug.WriteLine("drawRotatedArrow: " + this.rotationAngle, this.ToString()); Point center = new Point(this.Width / 2, this.Height / 2); int arWidthHalf = ARROW_WIDTH / 2; //int arHeightHalf = ARROW_HEIGHT / 2; Point[] arrowPoints = { new Point(center.X, center.Y - arWidthHalf), new Point(center.X - 2 * arWidthHalf / 3, center.Y + arWidthHalf), new Point(center.X + 2 * arWidthHalf / 3, center.Y + arWidthHalf), new Point(center.X, center.Y + arWidthHalf / 2) }; Debug.WriteLine("drawRotatedArrow: points " + PointUtil.pointsStr(arrowPoints), this.ToString()); PointMath.RotatePoints(arrowPoints, center, this.rotationAngle); Debug.WriteLine("drawRotatedArrow: points " + PointUtil.pointsStr(arrowPoints), this.ToString()); graphics.SetSmoothingMode(SmoothingMode.SmoothingModeAntiAlias); PenPlus pen = new PenPlus(ARROW_COLOR, 3); pen.SetEndCap(LineCap.LineCapRound); pen.SetStartCap(LineCap.LineCapRound); graphics.DrawLine(pen, new GpPoint(arrowPoints[0].X, arrowPoints[0].Y), new GpPoint(arrowPoints[1].X, arrowPoints[1].Y)); graphics.DrawLine(pen, new GpPoint(arrowPoints[1].X, arrowPoints[1].Y), new GpPoint(arrowPoints[3].X, arrowPoints[3].Y)); graphics.DrawLine(pen, new GpPoint(arrowPoints[3].X, arrowPoints[3].Y), new GpPoint(arrowPoints[2].X, arrowPoints[2].Y)); graphics.DrawLine(pen, new GpPoint(arrowPoints[2].X, arrowPoints[2].Y), new GpPoint(arrowPoints[0].X, arrowPoints[0].Y)); pen.Dispose(); }