Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Visualization/WorldShape.cs @ 1009

Last change on this file since 1009 was 984, checked in by bspisic, 16 years ago

#424
Implemented zooming

File size: 1.4 KB
Line 
1using System.Collections.Generic;
2using System.Drawing;
3using System.Drawing.Drawing2D;
4
5namespace HeuristicLab.Visualization {
6  public class WorldShape : IShape {
7    private RectangleD clippingArea;
8    private RectangleD boundingBox;
9
10    private readonly List<IShape> shapes = new List<IShape>();
11
12    public WorldShape(RectangleD clippingArea, RectangleD boundingBox) {
13      this.clippingArea = clippingArea;
14      this.boundingBox = boundingBox;
15    }
16
17    public void Draw(Graphics graphics, Rectangle viewport, RectangleD clippingArea) {
18      GraphicsState gstate = graphics.Save();
19
20      Rectangle innerViewport = Transform.ToScreen(boundingBox, viewport, clippingArea);
21
22      graphics.SetClip(innerViewport);
23
24      foreach (IShape shape in shapes) {
25        shape.Draw(graphics, innerViewport, this.clippingArea);
26      }
27
28      graphics.Restore(gstate);
29    }
30
31    /// <summary>
32    ///
33    /// </summary>
34    public RectangleD BoundingBox {
35      get { return boundingBox; }
36    }
37
38    public RectangleD ClippingArea {
39      get { return clippingArea; }
40      set { clippingArea = value; }
41    }
42
43    /// <summary>
44    /// adds a shape to the WorldShape
45    /// </summary>
46    /// <param name="shape">shape to add</param>
47    public void AddShape(IShape shape) {
48      shapes.Add(shape);
49    }
50
51    public bool RemoveShape(IShape shape) {
52      return shapes.Remove(shape);
53    }
54  }
55}
Note: See TracBrowser for help on using the repository browser.