public void Draw(Canvas sender, Graphics graphics) { Rectangle pos = ShapeIsSelected() ? PreviewOffset(Position, ClickData.Action) : Position; DrawShape(graphics, pos); // Create outline if (ShouldDrawBorder()) { var prevWidth = m_pen.Width; var prevColor = Color; Color = Utils.ColorSetHsv( 255 - prevColor.GetHue(), 255 - prevColor.GetSaturation(), 255 - prevColor.GetBrightness(), 200 ); m_pen.Width = EdgeWidth; Rectangle borderPos = Position.InflatedBy(-EdgeWidth / 2, -EdgeWidth / 2); pos = ShapeIsSelected() ? PreviewOffset(borderPos, ClickData.Action) : borderPos; DrawBorder(graphics, pos); Color = prevColor; m_pen.Width = prevWidth; } }