Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Visualization/RectangleShape.cs @ 1233

Last change on this file since 1233 was 1233, checked in by mstoeger, 15 years ago

General housekeeping (#498) Removed some old unused Z-Order values. Replaced some var types by concrete types. Renamed some LineShape properties. Added caching of Pens and Brushes in LineShape and RectangleShape. Put axis tick calculation algorithm into its own class.

File size: 1.6 KB
Line 
1using System.Drawing;
2
3namespace HeuristicLab.Visualization {
4  public class RectangleShape : IShape {
5    private RectangleD rectangle;
6
7    private Color color;
8    private int opacity = 255;
9
10    private Pen pen;
11    private Brush brush;
12
13    public RectangleShape(double x1, double y1, double x2, double y2, Color color) {
14      rectangle = new RectangleD(x1, y1, x2, y2);
15      this.color = color;
16    }
17
18    public RectangleD BoundingBox {
19      get { return rectangle; }
20    }
21
22    public RectangleD Rectangle {
23      get { return rectangle; }
24      set { rectangle = value; }
25    }
26
27    public void Draw(Graphics graphics, Rectangle viewport, RectangleD clippingArea) {
28      Rectangle screenRect = Transform.ToScreen(rectangle, viewport, clippingArea);
29
30      graphics.DrawRectangle(GetPen(), screenRect);
31      graphics.FillRectangle(GetBrush(), screenRect);
32    }
33
34    private Pen GetPen() {
35      if (pen == null)
36        pen = new Pen(color, 1);
37      return pen;
38    }
39
40    private Brush GetBrush() {
41      if (brush == null)
42        brush = new SolidBrush(Color.FromArgb(opacity, color));
43      return brush;
44    }
45
46    public int Opacity {
47      get { return opacity; }
48      set {
49        opacity = value;
50        DisposeDrawingTools();
51      }
52    }
53
54    public Color Color {
55      get { return color; }
56      set {
57        color = value;
58        DisposeDrawingTools();
59      }
60    }
61
62    private void DisposeDrawingTools() {
63      if (pen != null) {
64        pen.Dispose();
65        pen = null;
66      }
67
68      if (brush != null) {
69        brush.Dispose();
70        brush = null;
71      }
72    }
73  }
74}
Note: See TracBrowser for help on using the repository browser.