Index: /trunk/sources/HeuristicLab.Visualization/3.2/CompositeShape.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/CompositeShape.cs	(revision 1558)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/CompositeShape.cs	(revision 1559)
@@ -6,9 +6,14 @@
   public class CompositeShape : IShape {
     private IShape parent;
+    private bool showChildShapes = true;
 
     protected readonly List<IShape> shapes = new List<IShape>();
     protected RectangleD boundingBox = RectangleD.Empty;
 
+
+
     public virtual void Draw(Graphics graphics) {
+      if(!showChildShapes)
+        return;
       foreach (IShape shape in shapes) {
         shape.Draw(graphics);
@@ -39,7 +44,16 @@
     }
 
+    public bool ShowChildShapes {
+      get { return showChildShapes; }
+      set { showChildShapes = value; }
+    }
+
     public void ClearShapes() {
       shapes.Clear();
       boundingBox = RectangleD.Empty;
+    }
+
+    public IShape GetShape(int index) {
+      return shapes[index];
     }
 
Index: /trunk/sources/HeuristicLab.Visualization/3.2/HeuristicLab.Visualization-3.2.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/HeuristicLab.Visualization-3.2.csproj	(revision 1558)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/HeuristicLab.Visualization-3.2.csproj	(revision 1559)
@@ -110,4 +110,5 @@
     <Compile Include="IMouseEventListener.cs" />
     <Compile Include="Legend\LegendItem.cs" />
+    <Compile Include="MarkerShape.cs" />
     <Compile Include="MaxAggregator.cs" />
     <Compile Include="MinAggregator.cs" />
Index: /trunk/sources/HeuristicLab.Visualization/3.2/LineChart.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/LineChart.cs	(revision 1558)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/LineChart.cs	(revision 1559)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Drawing;
+using System.Drawing.Drawing2D;
 using System.Windows.Forms;
 using HeuristicLab.Core;
@@ -391,5 +392,8 @@
           LineShape lineShape = new LineShape(i - 1, row[i - 1], i, row[i], row.Color, row.Thickness, row.Style);
           rowEntry.LinesShape.AddShape(lineShape);
-        }
+          rowEntry.LinesShape.AddMarkerShape(new MarkerShape(i-1,row[i-1],8,row.Color));
+        }
+        if(row.Count>0)
+          rowEntry.LinesShape.AddMarkerShape(new MarkerShape((row.Count - 1), row[(row.Count - 1)], 8, row.Color));
       }
 
@@ -405,4 +409,5 @@
                                                         row.Style);
           rowEntry.LinesShape.AddShape(lineShape);
+          
         } else {
           LineShape lineShape = rowEntry.LinesShape.GetShape(0);
@@ -411,5 +416,5 @@
         }
       } else {
-        if (index > rowEntry.LinesShape.Count + 1) {
+        if (index > rowEntry.LinesShape.Count + 1) {    //MarkersShape is on position zero
           throw new NotImplementedException();
         }
@@ -419,4 +424,5 @@
           LineShape lineShape = new LineShape(index - 1, row[index - 1], index, row[index], row.Color, row.Thickness, row.Style);
           rowEntry.LinesShape.AddShape(lineShape);
+          rowEntry.LinesShape.AddMarkerShape(new MarkerShape(index, row[index ], 8, row.Color));
         }
 
@@ -424,4 +430,5 @@
         if (index > 0) {
           rowEntry.LinesShape.GetShape(index - 1).Y2 = value;
+          ((MarkerShape)rowEntry.LinesShape.markersShape.GetShape(index - 1)).Y = value;
         }
 
@@ -429,4 +436,5 @@
         if (index > 0 && index < row.Count - 1) {
           rowEntry.LinesShape.GetShape(index).Y1 = value;
+          ((MarkerShape)rowEntry.LinesShape.markersShape.GetShape(index)).Y = value;
         }
       }
@@ -583,4 +591,6 @@
 
     private class LinesShape : WorldShape {
+      public readonly CompositeShape markersShape = new CompositeShape();
+
       public void UpdateStyle(IDataRow row) {
         foreach (IShape shape in shapes) {
@@ -594,4 +604,21 @@
       }
 
+      public override void Draw(Graphics graphics) {
+        GraphicsState gstate = graphics.Save();
+
+        graphics.SetClip(Viewport);
+        foreach (IShape shape in shapes) {
+          // draw child shapes using our own clipping area
+          shape.Draw(graphics);
+        }
+        markersShape.Draw(graphics);
+        graphics.Restore(gstate);
+      }
+
+      public void AddMarkerShape(IShape shape) {
+        shape.Parent = this;
+        markersShape.AddShape(shape);
+      }
+
       public int Count {
         get { return shapes.Count; }
@@ -599,5 +626,5 @@
 
       public LineShape GetShape(int index) {
-        return (LineShape)shapes[index];
+        return (LineShape)shapes[index];     //shapes[0] is markersShape!!
       }
     }
@@ -610,4 +637,5 @@
       public RowEntry(IDataRow dataRow) {
         this.dataRow = dataRow;
+        linesShape.markersShape.Parent = linesShape;
       }
 
@@ -619,7 +647,15 @@
         get { return linesShape; }
       }
-    }
-
-    private class YAxisInfo {
+
+      public void hideMarkers() {
+        linesShape.markersShape.ShowChildShapes = false;
+      }
+
+      public void showMarkers() {
+        linesShape.markersShape.ShowChildShapes = true;
+      }
+    }
+
+    private class YAxisInfo { 
       private readonly Grid grid = new Grid();
       private readonly YAxis yAxis = new YAxis();
Index: /trunk/sources/HeuristicLab.Visualization/3.2/MarkerShape.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/MarkerShape.cs	(revision 1559)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/MarkerShape.cs	(revision 1559)
@@ -0,0 +1,122 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.Visualization {
+  class MarkerShape : IShape {
+
+    private IShape parent;
+    private RectangleD boundingBox;
+    
+
+    private Color color;
+    private int thickness;
+    private int width;
+    private DrawingStyle drawingStyle;
+
+    private Pen pen;
+
+    /// <summary>
+    /// Initializes the Marker.
+    /// </summary>
+    /// <param name="x">x coordinate of left dataPoint</param>
+    /// <param name="y">y coordinate of left dataPoint</param>
+    /// <param name="width">width of the whole marker</param>
+    /// <param name="color">color for the marker</param>
+    public MarkerShape(double x, double y, int width, Color color) {
+      this.boundingBox = new RectangleD(x , y , x, y );
+      this.width = width;
+      this.LSColor = color;
+    }
+
+    public RectangleD BoundingBox {
+      get { return boundingBox; }
+      set { boundingBox = value; }
+    }
+
+    public RectangleD ClippingArea {
+      get { return Parent.ClippingArea; }
+    }
+
+    public Rectangle Viewport {
+      get { return Parent.Viewport; }
+    }
+
+    public IShape Parent {
+      get { return parent; }
+      set { parent = value; }
+    }
+
+    public double Y {
+      get { return boundingBox.Y1; }
+      set {
+        boundingBox.Y1 = value ;
+        boundingBox.Y2 = value ;
+      }
+    }
+
+
+    public double X {
+      get { return (boundingBox.X1+boundingBox.X2)/2; }
+      set {
+        boundingBox.X1 = value;
+        boundingBox.X2 = value;
+      }
+    }
+
+   
+
+    /// <summary>
+    /// Draws the LineShape.
+    /// </summary>
+    /// <param name="graphics">graphics handle to draw to</param>
+    public virtual void Draw(Graphics graphics) {
+      Rectangle screenRect = Transform.ToScreen(boundingBox, Parent.Viewport, Parent.ClippingArea);
+      graphics.DrawEllipse(GetPen(),screenRect.Left-2, screenRect.Top-2,4,4);
+    }
+
+    private Pen GetPen() {
+      if (pen == null) {
+        pen = new Pen(Color.Black, 3);
+
+        switch (LSDrawingStyle) {
+          case DrawingStyle.Dashed:
+            pen.DashStyle = DashStyle.Dash;
+            break;
+          default:
+            pen.DashStyle = DashStyle.Solid;
+            break;
+        }
+      }
+
+      return pen;
+    }
+
+    private void DisposePen() {
+      if (pen != null) {
+        pen.Dispose();
+        pen = null;
+      }
+    }
+
+    public Color LSColor {
+      get { return color; }
+      set {
+        color = value;
+        DisposePen();
+      }
+    }
+
+    public DrawingStyle LSDrawingStyle {
+      get { return drawingStyle; }
+      set {
+        drawingStyle = value;
+        DisposePen();
+      }
+    }
+
+  }
+}
