override protected void DrawPath(SeriesBase series, System.Drawing.Pen pen) { if (series is ColumnSeries) { var points = new PointCollection(); var pointCount = 0; var rects = new List <Rect>(); ColumnSeries columnSeries = series as ColumnSeries; points = columnSeries.ColumnPoints; pointCount = columnSeries.ColumnPoints.Count; rects = columnSeries.Rects; System.Drawing.Brush fill = columnSeries.Fill.AsDrawingBrush(); System.Drawing.Pen fillPen = new System.Drawing.Pen(fill); if (RenderingMode == RenderingMode.Default) { for (int i = 0; i < columnSeries.Parts.Count; i++) { System.Windows.Shapes.Rectangle element = (columnSeries.Parts[i] as ColumnPart).CreatePart() as System.Windows.Shapes.Rectangle; if (element != null && !PartsCanvas.Children.Contains(element)) { PartsCanvas.Children.Add(element); } } } else { for (int i = 0; i < rects.Count; i++) { Rect rect = rects[i]; switch (RenderingMode) { case RenderingMode.GDIRendering: GDIGraphics.DrawRectangle(pen, (float)rect.X, (float)rect.Y, (float)rect.Width, (float)rect.Height); GDIGraphics.FillRectangle(fill, (float)rect.X, (float)rect.Y, (float)rect.Width, (float)rect.Height); break; case RenderingMode.Default: break; case RenderingMode.WritableBitmap: this.WritableBitmap.Lock(); WritableBitmapGraphics.DrawRectangle(pen, (float)rect.X, (float)rect.Y, (float)rect.Width, (float)rect.Height); WritableBitmapGraphics.FillRectangle(fill, (float)rect.X, (float)rect.Y, (float)rect.Width, (float)rect.Height); this.WritableBitmap.Unlock(); break; default: break; } } this.Collection.InvalidateBitmap(); } } }
public RenderContext(GraphicsDevice device, int width, int height) { GraphicsDevice = device; Width = width; Height = height; StaticBackground = new Bitmap(Width, Height); GDIGraphics = Graphics.FromImage(StaticBackground); BackgroundColor = System.Drawing.Color.White; GDIGraphics.Clear(BackgroundColor); }
protected override void DrawPath(SeriesBase series, System.Drawing.Pen pen) { if (series is AreaSeries) { AreaSeries areaSeries = series as AreaSeries; var brush = (this.Series as AreaSeries).Fill.AsDrawingBrush(); var points = areaSeries.AreaPoints; var pointCount = areaSeries.AreaPoints.Count; if (RenderingMode == RenderingMode.Default) { PartsCanvas.Children.Clear(); for (int i = 0; i < areaSeries.Parts.Count; i++) { var element = areaSeries.Parts[i].CreatePart(); if (element != null && !PartsCanvas.Children.Contains(element)) { PartsCanvas.Children.Add(element); } } } else { for (int i = 0; i < pointCount - 1; i++) { switch (RenderingMode) { case RenderingMode.GDIRendering: GDIGraphics.DrawLine(pen, points[i].AsDrawingPointF(), points[i + 1].AsDrawingPointF()); break; case RenderingMode.Default: break; case RenderingMode.WritableBitmap: this.WritableBitmap.Lock(); WritableBitmapGraphics.DrawLine(pen, points[i].AsDrawingPointF(), points[i + 1].AsDrawingPointF()); this.WritableBitmap.AddDirtyRect(new Int32Rect(0, 0, WritableBitmap.PixelWidth, WritableBitmap.PixelHeight)); this.WritableBitmap.Unlock(); break; default: break; } } DrawFilledPath(areaSeries, pen, brush); } this.Collection.InvalidateBitmap(); } }
public Color load(ref Surface surface) { using (Bitmap bmp = new Bitmap(fileName)) { if (surface == null) { surface = ResourceUtil.directDraw.createOffscreenSurface(bmp.Size); } using (GDIGraphics g = new GDIGraphics(surface)) { // without the size parameter, it doesn't work well with non-standard DPIs. g.graphics.DrawImage(bmp, new Rectangle(new Point(0, 0), bmp.Size)); } return(bmp.GetPixel(0, 0)); } }
protected override void DrawPath(SeriesBase series, System.Drawing.Pen pen) { if (series is SplineSeries) { SplineSeries splineSeries = series as SplineSeries; var points = splineSeries.SplinePoints; var pointCount = splineSeries.SplinePoints.Count; if (RenderingMode == RenderingMode.Default) { PartsCanvas.Children.Clear(); for (int i = 0; i < splineSeries.Parts.Count; i++) { var element = splineSeries.Parts[i].CreatePart(); if (element != null && !PartsCanvas.Children.Contains(element)) { PartsCanvas.Children.Add(element); } } } else { for (int i = 0; i < pointCount - 1; i++) { switch (RenderingMode) { case RenderingMode.GDIRendering: GDIGraphics.DrawBezier(pen, points[i].AsDrawingPointF(), splineSeries.FirstControlPoints[i].AsDrawingPointF(), splineSeries.SecondControlPoints[i].AsDrawingPointF(), points[i + 1].AsDrawingPointF()); break; case RenderingMode.Default: break; case RenderingMode.WritableBitmap: this.WritableBitmap.Lock(); WritableBitmapGraphics.DrawBezier(pen, points[i].AsDrawingPointF(), splineSeries.FirstControlPoints[i].AsDrawingPointF(), splineSeries.SecondControlPoints[i].AsDrawingPointF(), points[i + 1].AsDrawingPointF()); this.WritableBitmap.AddDirtyRect(new Int32Rect(0, 0, WritableBitmap.PixelWidth, WritableBitmap.PixelHeight)); this.WritableBitmap.Unlock(); break; default: break; } } this.Collection.InvalidateBitmap(); } } }
protected void loadFile(string fileName) { using (Bitmap bmp = new Bitmap(fileName)) { if (_surface == null) { _surface = directDraw.createOffscreenSurface(bmp.Size); } using (GDIGraphics g = new GDIGraphics(_surface)) { // without the size parameter, it doesn't work well with non-standard DPIs. g.graphics.DrawImage(bmp, new Rectangle(new Point(0, 0), bmp.Size)); } _surface.sourceColorKey = bmp.GetPixel(0, 0); } }
override protected void DrawPath(SeriesBase series, System.Drawing.Pen pen) { if (series is StepLineSeries) { StepLineSeries stepLineSeries = series as StepLineSeries; var points = stepLineSeries.LinePoints; var pointCount = stepLineSeries.LinePoints.Count; if (RenderingMode == RenderingMode.Default) { PartsCanvas.Children.Clear(); for (int i = 0; i < stepLineSeries.Parts.Count; i++) { var element = stepLineSeries.Parts[i].CreatePart(); if (element != null && !PartsCanvas.Children.Contains(element)) { PartsCanvas.Children.Add(element); } } } else { for (int i = 0; i < pointCount - 1; i++) { switch (RenderingMode) { case RenderingMode.GDIRendering: GDIGraphics.DrawLine(pen, points[i].AsDrawingPointF(), points[i + 1].AsDrawingPointF()); break; case RenderingMode.Default: break; case RenderingMode.WritableBitmap: WritableBitmapGraphics.DrawLine(pen, points[i].AsDrawingPointF(), points[i + 1].AsDrawingPointF()); break; default: break; } } this.Collection.InvalidateBitmap(); } } }
// load picture into this surface. public Color load(ref Surface surface) { using (Bitmap bmp = new Bitmap(fileName)) { if (surface != null) { surface.Dispose(); } Size sz = bmp.Size; sz.Width *= zoom; sz.Height *= zoom; surface = ResourceUtil.directDraw.createOffscreenSurface(sz); using (GDIGraphics g = new GDIGraphics(surface)) { g.graphics.InterpolationMode = InterpolationMode.NearestNeighbor; g.graphics.PixelOffsetMode = PixelOffsetMode.Half; g.graphics.DrawImage(bmp, new Rectangle(new Point(0, 0), sz)); } return(bmp.GetPixel(0, 0)); } }
private void DrawFilledPath(SeriesBase series, System.Drawing.Pen pen, System.Drawing.Brush brush) { var path = new System.Drawing.Drawing2D.GraphicsPath(); if (series is AreaSeries) { path.StartFigure(); AreaSeries areaSeries = series as AreaSeries; var points = areaSeries.AreaPoints; var pointCount = areaSeries.AreaPoints.Count; for (int i = 0; i < pointCount - 1; i++) { System.Drawing.PointF startPoint = points[i].AsDrawingPointF(); System.Drawing.PointF endPoint = points[i + 1].AsDrawingPointF(); path.AddLine(startPoint, endPoint); } path.CloseAllFigures(); switch (RenderingMode) { case RenderingMode.GDIRendering: GDIGraphics.FillPath(brush, path); break; case RenderingMode.Default: break; case RenderingMode.WritableBitmap: WritableBitmapGraphics.FillPath(brush, path); break; default: break; } } }
protected override void DrawPath(SeriesBase series, System.Drawing.Pen pen) { if (series is BarErrorSeries) { var points = new PointCollection(); var lowPoints = new PointCollection(); var openPoints = new PointCollection(); var closePoints = new PointCollection(); var openOffPoints = new PointCollection(); var closeOffPoints = new PointCollection(); var pointCount = 0; PartsCollection partsCollection = new PartsCollection(); if (series is BarErrorSeries) { BarErrorSeries lineSeries = series as BarErrorSeries; points = lineSeries.HighPoints; lowPoints = lineSeries.LowPoints; openPoints = lineSeries.OpenPoints; closePoints = lineSeries.ClosePoints; openOffPoints = lineSeries.OpenOffPoints; closeOffPoints = lineSeries.CloseOffPoints; pointCount = lineSeries.HighPoints.Count; partsCollection = lineSeries.Parts; } if (RenderingMode == RenderingMode.Default) { for (int i = 0; i < partsCollection.Count; i++) { var element = partsCollection[i].CreatePart(); if (element != null && !PartsCanvas.Children.Contains(element)) { PartsCanvas.Children.Add(element); } } } else { if (series is BarErrorSeries) { for (int i = 0; i < pointCount; i++) { switch (RenderingMode) { case RenderingMode.GDIRendering: GDIGraphics.DrawLine(pen, points[i].AsDrawingPointF(), lowPoints[i].AsDrawingPointF()); GDIGraphics.DrawLine(pen, openOffPoints[i].AsDrawingPointF(), openPoints[i].AsDrawingPointF()); GDIGraphics.DrawLine(pen, closeOffPoints[i].AsDrawingPointF(), closePoints[i].AsDrawingPointF()); break; case RenderingMode.Default: break; case RenderingMode.WritableBitmap: this.WritableBitmap.Lock(); WritableBitmapGraphics.DrawLine(pen, points[i].AsDrawingPointF(), lowPoints[i].AsDrawingPointF()); WritableBitmapGraphics.DrawLine(pen, openOffPoints[i].AsDrawingPointF(), openPoints[i].AsDrawingPointF()); WritableBitmapGraphics.DrawLine(pen, closeOffPoints[i].AsDrawingPointF(), closePoints[i].AsDrawingPointF()); this.WritableBitmap.Unlock(); break; default: break; } } } this.Collection.InvalidateBitmap(); } } }
override protected void DrawPath(SeriesBase series, System.Drawing.Pen pen) { if (series is ScatterSeries || series is BubbleSeries) { var points = new PointCollection(); var sizes = new List <double>(); var pointCount = 0; float size = 0; var brush = new SolidColorBrush(Colors.Blue).AsDrawingBrush(); PartsCollection partsCollection = new PartsCollection(); if (series is ScatterSeries) { ScatterSeries scatterSeries = series as ScatterSeries; points = scatterSeries.ScatterPoints; pointCount = scatterSeries.ScatterPoints.Count; size = (float)scatterSeries.ScatterSize; brush = (this.Series as ScatterSeries).Fill.AsDrawingBrush(); partsCollection = scatterSeries.Parts; } else if (series is BubbleSeries) { BubbleSeries scatterSeries = series as BubbleSeries; points = scatterSeries.BubblePoints; pointCount = scatterSeries.BubblePoints.Count; //size = (float)scatterSeries.; sizes = scatterSeries.SizeValues; brush = (this.Series as FillSeriesBase).Fill.AsDrawingBrush(); partsCollection = scatterSeries.Parts; } if (RenderingMode == RenderingMode.Default) { for (int i = 0; i < partsCollection.Count; i++) { Ellipse element = (Ellipse)partsCollection[i].CreatePart(); if (element != null && !PartsCanvas.Children.Contains(element)) { PartsCanvas.Children.Add(element); } } } else { for (int i = 0; i < pointCount; i++) { if (series is ScatterSeries) { switch (RenderingMode) { case RenderingMode.GDIRendering: GDIGraphics.DrawEllipse(pen, points[i].AsDrawingPointF().X - size / 2, points[i].AsDrawingPointF().Y - size / 2, size, size); GDIGraphics.FillEllipse(brush, points[i].AsDrawingPointF().X - size / 2, points[i].AsDrawingPointF().Y - size / 2, size, size); break; case RenderingMode.Default: break; case RenderingMode.WritableBitmap: this.WritableBitmap.Lock(); WritableBitmapGraphics.DrawEllipse(pen, points[i].AsDrawingPointF().X - size / 2, points[i].AsDrawingPointF().Y - size / 2, size, size); WritableBitmapGraphics.FillEllipse(brush, points[i].AsDrawingPointF().X - size / 2, points[i].AsDrawingPointF().Y - size / 2, size, size); this.WritableBitmap.Unlock(); break; default: break; } } else { size = (int)sizes[i]; switch (RenderingMode) { case RenderingMode.GDIRendering: GDIGraphics.DrawEllipse(pen, points[i].AsDrawingPointF().X - size / 2, points[i].AsDrawingPointF().Y - size / 2, size, size); GDIGraphics.FillEllipse(brush, points[i].AsDrawingPointF().X - size / 2, points[i].AsDrawingPointF().Y - size / 2, size, size); break; case RenderingMode.Default: break; case RenderingMode.WritableBitmap: this.WritableBitmap.Lock(); WritableBitmapGraphics.DrawEllipse(pen, points[i].AsDrawingPointF().X - size / 2, points[i].AsDrawingPointF().Y - size / 2, size, size); WritableBitmapGraphics.FillEllipse(brush, points[i].AsDrawingPointF().X - size / 2, points[i].AsDrawingPointF().Y - size / 2, size, size); this.WritableBitmap.Unlock(); break; default: break; } } } this.Collection.InvalidateBitmap(); } } }
override protected void DrawPath(SeriesBase series, System.Drawing.Pen pen) { if (series is LineSeries || series is HiLoSeries || series is HiLoOpenCloseSeries) { var points = new PointCollection(); var lowPoints = new PointCollection(); var pointCount = 0; PartsCollection partsCollection = new PartsCollection(); if (series is LineSeries) { LineSeries lineSeries = series as LineSeries; points = lineSeries.LinePoints; pointCount = lineSeries.LinePoints.Count; partsCollection = lineSeries.Parts; } else if (series is HiLoSeries) { HiLoSeries lineSeries = series as HiLoSeries; points = lineSeries.HighPoints; lowPoints = lineSeries.LowPoints; pointCount = lineSeries.HighPoints.Count; partsCollection = lineSeries.Parts; } else if (series is HiLoOpenCloseSeries) { HiLoOpenCloseSeries lineSeries = series as HiLoOpenCloseSeries; points = lineSeries.HighPoints; lowPoints = lineSeries.LowPoints; pointCount = lineSeries.HighPoints.Count; partsCollection = lineSeries.Parts; } if (RenderingMode == RenderingMode.Default) { for (int i = 0; i < partsCollection.Count; i++) { UIElement renderElement = partsCollection[i].CreatePart(); if (renderElement != null && !PartsCanvas.Children.Contains(renderElement)) { PartsCanvas.Children.Add(renderElement); } } } else { if (series is LineSeries) { for (int i = 0; i < pointCount - 1; i++) { switch (RenderingMode) { case RenderingMode.GDIRendering: GDIGraphics.DrawLine(pen, points[i].AsDrawingPointF(), points[i + 1].AsDrawingPointF()); break; case RenderingMode.Default: break; case RenderingMode.WritableBitmap: this.WritableBitmap.Lock(); WritableBitmapGraphics.DrawLine(pen, points[i].AsDrawingPointF(), points[i + 1].AsDrawingPointF()); this.WritableBitmap.Unlock(); break; default: break; } } } else { for (int i = 0; i < pointCount; i++) { switch (RenderingMode) { case RenderingMode.GDIRendering: GDIGraphics.DrawLine(pen, points[i].AsDrawingPointF(), lowPoints[i].AsDrawingPointF()); break; case RenderingMode.Default: break; case RenderingMode.WritableBitmap: this.WritableBitmap.Lock(); WritableBitmapGraphics.DrawLine(pen, points[i].AsDrawingPointF(), lowPoints[i].AsDrawingPointF()); this.WritableBitmap.Unlock(); break; default: break; } } } this.Collection.InvalidateBitmap(); } } }
static MountainVoxel() { initCliffSprites(); // pre-draw pictures Pen blackPen = new Pen(Color.Black); Brush whiteBrush = new SolidBrush(Color.White); Brush magentaBrush = new SolidBrush(Color.Magenta); for (int tdiff = 0; tdiff <= 8; tdiff++) { // tdiff= difference between top and bottom int u = Math.Min(tdiff + 2, 6); images[tdiff] = ResourceUtil.directDraw.createOffscreenSurface( new Size(32 * (5 - (Math.Abs(tdiff - 4) + 1) / 2), tdiff * 4 + 1 + 2 * 4)); images[tdiff].sourceColorKey = Color.Magenta; using (GDIGraphics g = new GDIGraphics(images[tdiff])) { // clearing the surface at the beginning will leave dots since // adjacent pictures sometimes overlap. // g.graphics.FillRectangle(magentaBrush, // new Rectangle( new Point(0,0), images[tdiff].size )); // clear the surface int idx = 0; for ( ; u >= tdiff - u; u--, idx++) { int offset = idx * 32; // clear the sprite g.graphics.FillRectangle(magentaBrush, new Rectangle(new Point(offset, 0), new Size(32, images[tdiff].size.Height))); Point[] pts = new Point[] { new Point(offset + 16, 0 /*1*/), new Point(offset + 32, u * 4), new Point(offset + 16, tdiff * 4), new Point(offset + 15, tdiff * 4), new Point(offset, u * 4), new Point(offset + 15, 0 /*1*/) }; g.graphics.FillPolygon(whiteBrush, pts); g.graphics.DrawLines(blackPen, pts); } } } blackPen.Dispose(); whiteBrush.Dispose(); magentaBrush.Dispose(); // load color palettes XmlDocument doc = new XmlDocument(); doc.Load(ResourceUtil.findSystemResource("mountainPalette.xml")); mountainColors[0] = loadColors((XmlElement)doc.SelectSingleNode("/*/spring")); mountainColors[1] = loadColors((XmlElement)doc.SelectSingleNode("/*/summer")); mountainColors[2] = loadColors((XmlElement)doc.SelectSingleNode("/*/autumn")); mountainColors[3] = loadColors((XmlElement)doc.SelectSingleNode("/*/winter")); waterColors = loadColors((XmlElement)doc.SelectSingleNode("/*/water")); }
public void Reset() { GDIGraphics.Clear(System.Drawing.Color.White); }