/// <summary> /// Renders a label to the map. /// </summary> /// <param name="g">Graphics reference</param> /// <param name="LabelPoint">Label placement</param> /// <param name="Offset">Offset of label in screen coordinates</param> /// <param name="font">Font used for rendering</param> /// <param name="forecolor">Font forecolor</param> /// <param name="backcolor">Background color</param> /// <param name="halo">Color of halo</param> /// <param name="rotation">Text rotation in degrees</param> /// <param name="text">Text to render</param> /// <param name="map">Map reference</param> public static void DrawLabel(System.Drawing.Graphics g, System.Drawing.PointF LabelPoint, System.Drawing.PointF Offset, System.Drawing.Font font, System.Drawing.Color forecolor, System.Drawing.Brush backcolor, System.Drawing.Pen halo, float rotation, string text, SharpMap.Map map) { System.Drawing.SizeF fontSize = g.MeasureString(text, font); //Calculate the size of the text LabelPoint.X += Offset.X; LabelPoint.Y += Offset.Y; //add label offset if (rotation != 0 && rotation != float.NaN) { g.TranslateTransform(LabelPoint.X, LabelPoint.Y); g.RotateTransform(rotation); g.TranslateTransform(-fontSize.Width / 2, -fontSize.Height / 2); if (backcolor != null && backcolor != System.Drawing.Brushes.Transparent) g.FillRectangle(backcolor, 0, 0, fontSize.Width * 0.74f + 1f, fontSize.Height * 0.74f); System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath(); path.AddString(text, font.FontFamily, (int)font.Style, font.Size, new System.Drawing.Point(0, 0), null); if (halo != null) g.DrawPath(halo, path); g.FillPath(new System.Drawing.SolidBrush(forecolor), path); //g.DrawString(text, font, new System.Drawing.SolidBrush(forecolor), 0, 0); g.Transform = map.MapTransform; } else { if (backcolor != null && backcolor != System.Drawing.Brushes.Transparent) g.FillRectangle(backcolor, LabelPoint.X, LabelPoint.Y, fontSize.Width * 0.74f + 1, fontSize.Height * 0.74f); System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath(); path.AddString(text, font.FontFamily, (int)font.Style, font.Size, LabelPoint, null); if (halo != null) g.DrawPath(halo, path); g.FillPath(new System.Drawing.SolidBrush(forecolor), path); //g.DrawString(text, font, new System.Drawing.SolidBrush(forecolor), LabelPoint.X, LabelPoint.Y); } }
public void draw(System.Drawing.Graphics g) { g.TranslateTransform(this.x, this.y); g.RotateTransform(rotation); g.DrawImage(canon, (0 - canon.Width / 2), (0 - canon.Height / 2), canon.Width, canon.Height); g.ResetTransform(); }
protected virtual void AdjustOrigin(System.Drawing.Graphics g, Point newOrigin, ref Rectangle r) { Debug.WriteLineIf(GridViewDebugPaint.TraceVerbose, "Adjusting paint origin to (" + newOrigin.X.ToString(CultureInfo.InvariantCulture) + "," + newOrigin.Y.ToString(CultureInfo.InvariantCulture) + ")"); g.ResetTransform(); g.TranslateTransform(newOrigin.X, newOrigin.Y); r.Offset(-newOrigin.X, -newOrigin.Y); }
public RectangleF PaintSymbol(System.Drawing.Graphics g, System.Drawing.RectangleF bounds) { if (Shape != XYPlotScatterStyles.Shape.NoSymbol) { GraphicsState gs = g.Save(); g.TranslateTransform(bounds.X + 0.5f * bounds.Width, bounds.Y + 0.5f * bounds.Height); Paint(g); g.Restore(gs); if (this.SymbolSize > bounds.Height) bounds.Inflate(0, this.SymbolSize - bounds.Height); } return bounds; }
public RectangleF PaintSymbol(System.Drawing.Graphics g, System.Drawing.RectangleF bounds) { if (_scatterSymbol is NoSymbol) return bounds; var cachedPathData = new CachedPathData(); var cachedBrushData = new CachedBrushData(); var scatterSymbol = CalculateOverriddenScatterSymbol(); CalculatePaths(scatterSymbol, _symbolSize, ref cachedPathData); CalculateBrushes(scatterSymbol, _color, cachedPathData, ref cachedBrushData); GraphicsState gs = g.Save(); g.TranslateTransform(bounds.X + 0.5f * bounds.Width, bounds.Y + 0.5f * bounds.Height); if (null != cachedPathData.InsetPath) g.FillPath(cachedBrushData.InsetBrush, cachedPathData.InsetPath); if (null != cachedPathData.FillPath) g.FillPath(cachedBrushData.FillBrush, cachedPathData.FillPath); if (null != cachedPathData.FramePath) g.FillPath(cachedBrushData.FrameBrush, cachedPathData.FramePath); cachedBrushData.Clear(); cachedPathData.Clear(); g.Restore(gs); if (this.SymbolSize > bounds.Height) bounds.Inflate(0, (float)(this.SymbolSize - bounds.Height)); return bounds; }
public void Draw(System.Drawing.Graphics g, float scale, float x, float y, DrawMode mode, Image image) { if (!Visible) return; GraphicsState old_state = g.Save(); g.ScaleTransform(scale, scale); g.TranslateTransform(x, y); Rectangle frect = rect;// GetRect(x, y, scale); g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; int pen_width = mode == DrawMode.Hovered ? 2 : 1; if (mode == DrawMode.Selected) { g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver; g.FillRectangle(new SolidBrush(Color.FromArgb(60, Color.Red)), frect); g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; g.DrawRectangle(new Pen(Color.Red, pen_width), frect); } else { Color color = Color.RoyalBlue; g.DrawRectangle(new Pen(color, pen_width), frect); } g.Restore(old_state); //GraphicsState old_state = g.Save(); }
/// <summary> /// Draw an arc on the canvas /// </summary> /// <param name="canvas">The canvas on which the arc is drawn</param> public void Draw(System.Drawing.Graphics canvas) { System.Drawing.Drawing2D.Matrix matrix; double startAngle, endAngle; matrix = canvas.Transform; canvas.TranslateTransform((m_points[0].x + m_points[1].x) / 2, (m_points[0].y + m_points[1].y) / 2); canvas.RotateTransform((float)(m_rotateAngle / System.Math.PI * 180)); if (m_points[2].Equals(m_points[3])) { canvas.DrawEllipse(m_style.drawingStyle, -(m_points[1].x - m_points[0].x) / 2, -(m_points[1].y - m_points[0].y) / 2, m_points[1].x - m_points[0].x, m_points[1].y - m_points[0].y); } else { startAngle = System.Math.Atan2(m_points[2].y - (m_points[1].y + m_points[0].y) / 2, m_points[2].x - (m_points[1].x + m_points[0].x) / 2); if (startAngle < 0) { startAngle += System.Math.PI * 2; } startAngle = (startAngle / Math.PI) * 180; endAngle = System.Math.Atan2(m_points[3].y - (m_points[1].y + m_points[0].y) / 2, m_points[3].x - (m_points[1].x + m_points[0].x) / 2); if (endAngle < 0) { endAngle += System.Math.PI * 2; } endAngle = (endAngle / Math.PI) * 180; endAngle -= startAngle; if (endAngle < 0) { endAngle += 360; } canvas.DrawArc(m_style.drawingStyle, -(m_points[1].x - m_points[0].x) / 2, -(m_points[1].y - m_points[0].y) / 2, m_points[1].x - m_points[0].x, m_points[1].y - m_points[0].y, (float)startAngle, (float)endAngle); } canvas.Transform = matrix; }
/// <summary> /// Draws link's terminal ponit. /// </summary> /// <param name="canvas"></param> /// <param name="style"></param> /// <param name="pt1"></param> /// <param name="pt2"></param> private void DrawTerminal(System.Drawing.Graphics canvas, GOM_Terminal_Style style, System.Drawing.PointF pt1, System.Drawing.PointF pt2) { System.Drawing.Drawing2D.Matrix matrix; float angle; angle = (float)(System.Math.Atan2(pt2.Y - pt1.Y, pt2.X - pt1.X) / System.Math.PI) * 180; matrix = canvas.Transform; canvas.TranslateTransform(pt1.X, pt1.Y); canvas.RotateTransform(angle); switch (style) { case GOM_Terminal_Style.Circle: { canvas.FillEllipse(new System.Drawing.SolidBrush(m_drawingStyle.drawingStyle.Color), -5, -5, 10, 10); break; } case GOM_Terminal_Style.Arrow: { canvas.DrawLine(m_drawingStyle.drawingStyle, 0, 0, 10, 5); canvas.DrawLine(m_drawingStyle.drawingStyle, 0, 0, 10, -5); break; } case GOM_Terminal_Style.Triangle: { System.Drawing.Point[] rgPts; rgPts = new System.Drawing.Point[3]; rgPts[0].X = 0; rgPts[0].Y = 0; rgPts[1].X = 10; rgPts[1].Y = 5; rgPts[2].X = 10; rgPts[2].Y = -5; canvas.FillPolygon(new System.Drawing.SolidBrush(m_drawingStyle.drawingStyle.Color), rgPts); break; } case GOM_Terminal_Style.Diamond: { System.Drawing.Point[] rgPts; rgPts = new System.Drawing.Point[4]; rgPts[0].X = 0; rgPts[0].Y = 0; rgPts[1].X = 5; rgPts[1].Y = 5; rgPts[2].X = 10; rgPts[2].Y = 0; rgPts[3].X = 5; rgPts[3].Y = -5; canvas.FillPolygon(new System.Drawing.SolidBrush(m_drawingStyle.drawingStyle.Color), rgPts); break; } } canvas.Transform = matrix; }
public void DrawSelected(System.Drawing.Graphics canvas, System.Drawing.Pen BoundingBoxPen, System.Drawing.Pen ResizeBoxPen, System.Drawing.Pen ConnectBoxPen, System.Drawing.Pen ControlBoxPen) { System.Drawing.Drawing2D.Matrix orgTrans = canvas.Transform; System.Drawing.RectangleF rc; rc = this.BoundingBox; canvas.TranslateTransform(this.xOffset, this.yOffset); canvas.TranslateTransform((rc.Left + rc.Right) / 2, (rc.Top + rc.Bottom) / 2); canvas.RotateTransform(this.rotation); canvas.TranslateTransform(-(rc.Left + rc.Right) / 2, -(rc.Top + rc.Bottom) / 2); for (int i = 0; i < rgObjects.Count; i++) { rgObjects[i].Draw(canvas, false); } canvas.DrawRectangle(BoundingBoxPen, rc.X - 3, rc.Y - 3, rc.Width + 6, rc.Height + 6); canvas.DrawRectangle(ResizeBoxPen, rc.X - 5, rc.Y - 5, 4, 4); canvas.DrawRectangle(ResizeBoxPen, rc.X - 5, rc.Bottom + 1, 4, 4); canvas.DrawRectangle(ResizeBoxPen, rc.Right + 1, rc.Y - 5, 4, 4); canvas.DrawRectangle(ResizeBoxPen, rc.Right + 1, rc.Bottom + 1, 4, 4); canvas.DrawEllipse(ControlBoxPen, (rc.Left + rc.Right) / 2 - 3, rc.Y - 30, 6, 6); canvas.DrawLine(ControlBoxPen, (rc.Left + rc.Right) / 2, rc.Y - 5, (rc.Left + rc.Right) / 2, rc.Y - 24); canvas.DrawRectangle(ConnectBoxPen, rc.X - 5, (rc.Top + rc.Bottom) / 2 - 2, 4, 4); canvas.DrawRectangle(ConnectBoxPen, (rc.Left + rc.Right) / 2 - 2, rc.Bottom + 1, 4, 4); canvas.DrawRectangle(ConnectBoxPen, (rc.Left + rc.Right) / 2 - 2, rc.Y - 5, 4, 4); canvas.DrawRectangle(ConnectBoxPen, rc.Right + 1, (rc.Top + rc.Bottom) / 2 - 2, 4, 4); canvas.Transform = orgTrans; }
internal static void RenderVerticalText( System.Drawing.Graphics g, string text, Rectangle textRect, Font textFont, Color foreColor, StringFormat format, bool left) { if (string.IsNullOrEmpty(text)) { return; } if (left) { g.TranslateTransform(textRect.X, textRect.Bottom); g.RotateTransform(270F); } else { g.TranslateTransform(textRect.Right, textRect.Y); g.RotateTransform(90F); } Rectangle transformRect = new Rectangle( 0, 0, textRect.Height, textRect.Width); try { using (Brush brush = new SolidBrush(foreColor)) { g.DrawString( text, textFont, brush, transformRect, format); } } finally { g.ResetTransform(); } }
public void Draw(System.Drawing.Graphics canvas, bool ShowConnectPoint) { System.Drawing.Drawing2D.Matrix orgTrans = canvas.Transform; System.Drawing.RectangleF rc = this.BoundingBox; canvas.TranslateTransform(this.xOffset, this.yOffset); canvas.TranslateTransform((rc.Left + rc.Right) / 2, (rc.Top + rc.Bottom) / 2); canvas.RotateTransform(this.rotation); canvas.TranslateTransform(-(rc.Left + rc.Right) / 2, -(rc.Top + rc.Bottom) / 2); for (int i = 0; i < rgObjects.Count; i++) { rgObjects[i].Draw(canvas, false); } if (ShowConnectPoint) { System.Drawing.Pen ConnectBoxPen; ConnectBoxPen = new System.Drawing.Pen(System.Drawing.Color.Gray, 1); ConnectBoxPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot; canvas.DrawRectangle(ConnectBoxPen, rc.X - 5, (rc.Top + rc.Bottom) / 2 - 2, 4, 4); canvas.DrawRectangle(ConnectBoxPen, (rc.Left + rc.Right) / 2 - 2, rc.Bottom + 1, 4, 4); canvas.DrawRectangle(ConnectBoxPen, (rc.Left + rc.Right) / 2 - 2, rc.Y - 5, 4, 4); canvas.DrawRectangle(ConnectBoxPen, rc.Right + 1, (rc.Top + rc.Bottom) / 2 - 2, 4, 4); } canvas.Transform = orgTrans; }
public void DrawSelected(System.Drawing.Graphics canvas, System.Drawing.Pen BoundingBoxPen, System.Drawing.Pen ResizeBoxPen, System.Drawing.Pen ConnectBoxPen, System.Drawing.Pen ControlBoxPen) { System.Drawing.Drawing2D.Matrix orgTrans = canvas.Transform; System.Drawing.RectangleF rc = this.BoundingBox; canvas.TranslateTransform(this.xOffset, this.yOffset); canvas.TranslateTransform((rc.Left + rc.Right) / 2, (rc.Top + rc.Bottom) / 2); canvas.RotateTransform(this.rotation); canvas.TranslateTransform(-(rc.Left + rc.Right) / 2, -(rc.Top + rc.Bottom) / 2); System.Drawing.Brush brush = new System.Drawing.SolidBrush(System.Drawing.Color.Blue); canvas.FillEllipse(brush, m_point.x - 3, m_point.y - 3, 6, 6); canvas.Transform = orgTrans; }
public void Draw(System.Drawing.Graphics canvas, bool ShowConnectPoint) { System.Drawing.Drawing2D.Matrix orgTrans = canvas.Transform; System.Drawing.RectangleF rc = this.BoundingBox; canvas.TranslateTransform(this.xOffset, this.yOffset); canvas.TranslateTransform((rc.Left + rc.Right) / 2, (rc.Top + rc.Bottom) / 2); canvas.RotateTransform(this.rotation); canvas.TranslateTransform(-(rc.Left + rc.Right) / 2, -(rc.Top + rc.Bottom) / 2); System.Drawing.Brush brush = new System.Drawing.SolidBrush(System.Drawing.Color.Gray); canvas.FillEllipse(brush, m_point.x - 3, m_point.y - 3, 6, 6); canvas.Transform = orgTrans; }
public RectangleF PaintSymbol(System.Drawing.Graphics g, System.Drawing.RectangleF bounds) { if (!LineConnectionStyles.NoConnection.Instance.Equals(_connectionStyle)) { GraphicsState gs = g.Save(); g.TranslateTransform(bounds.X + 0.5f * bounds.Width, bounds.Y + 0.5f * bounds.Height); float halfwidth = bounds.Width / 2; float symsize = (float)(_symbolSize); if (this.UseSymbolGap == true) { // plot a line with the length of symbolsize from PaintLine(g, new PointF(-halfwidth, 0), new PointF(-symsize, 0)); PaintLine(g, new PointF(symsize, 0), new PointF(halfwidth, 0)); } else // no gap { PaintLine(g, new PointF(-halfwidth, 0), new PointF(halfwidth, 0)); } g.Restore(gs); } return bounds; }
public void Draw(System.Drawing.Graphics g, System.Drawing.RectangleF innerArea) { if (null == _cachedShadowBrush) SetCachedBrushes(); innerArea.Inflate(_shadowLength / 2,_shadowLength/2); // please note: m_Bounds is already extended to the shadow // first the shadow _cachedShadowBrush.Rectangle = innerArea; g.TranslateTransform(_shadowLength, _shadowLength); g.FillRectangle(_cachedShadowBrush, innerArea); g.TranslateTransform(-_shadowLength, -_shadowLength); _brush.Rectangle = innerArea; g.FillRectangle(_brush, innerArea); g.DrawRectangle(Pens.Black, innerArea.Left, innerArea.Top, innerArea.Width , innerArea.Height ); }
/// <summary> /// Renders a point to the map. /// </summary> /// <param name="g">Graphics reference</param> /// <param name="point">Point to render</param> /// <param name="symbol">Symbol to place over point</param> /// <param name="symbolscale">The amount that the symbol should be scaled. A scale of '1' equals to no scaling</param> /// <param name="offset">Symbol offset af scale=1</param> /// <param name="rotation">Symbol rotation in degrees</param> /// <param name="map">Map reference</param> public static void DrawPoint(System.Drawing.Graphics g, SharpMap.Geometries.Point point, System.Drawing.Bitmap symbol, float symbolscale, System.Drawing.PointF offset, float rotation, SharpMap.Map map) { if (point == null) return; if (symbol == null) //We have no point style - Use a default symbol symbol = defaultsymbol; System.Drawing.PointF pp = SharpMap.Utilities.Transform.WorldtoMap(point, map); if (rotation != 0 && rotation != float.NaN) { g.TranslateTransform(pp.X, pp.Y); g.RotateTransform(rotation); g.TranslateTransform(-symbol.Width / 2, -symbol.Height / 2); if (symbolscale == 1f) g.DrawImageUnscaled(symbol, (int)(pp.X - symbol.Width / 2 + offset.X), (int)(pp.Y - symbol.Height / 2 + offset.Y)); else { float width = symbol.Width * symbolscale; float height = symbol.Height * symbolscale; g.DrawImage(symbol, (int)pp.X - width / 2 + offset.X * symbolscale, (int)pp.Y - height / 2 + offset.Y * symbolscale, width, height); } g.Transform = map.MapTransform; } else { if (symbolscale == 1f) g.DrawImageUnscaled(symbol, (int)(pp.X - symbol.Width / 2 + offset.X), (int)(pp.Y - symbol.Height / 2 + offset.Y)); else { float width = symbol.Width * symbolscale; float height = symbol.Height * symbolscale; g.DrawImage(symbol, (int)pp.X - width / 2 + offset.X * symbolscale, (int)pp.Y - height / 2 + offset.Y * symbolscale, width, height); } } }
public void Draw(System.Drawing.Graphics g, BrushX brush, RectangleD2D innerArea) { BrushX shadowBrush = null; if (object.ReferenceEquals(brush, _brush)) { if (null == _cachedShadowBrush) { _cachedShadowBrush = GetShadowBrush(brush); _cachedShadowBrush.ParentObject = this; } shadowBrush = _cachedShadowBrush; } else { shadowBrush = GetShadowBrush(brush); } innerArea.Inflate(_shadowLength / 2, _shadowLength / 2); // please note: m_Bounds is already extended to the shadow // first the shadow shadowBrush.SetEnvironment(innerArea, BrushX.GetEffectiveMaximumResolution(g, 1)); // shortCuts to floats RectangleF iArea = (RectangleF)innerArea; float shadowLength = (float)_shadowLength; g.TranslateTransform(shadowLength, shadowLength); g.FillRectangle(shadowBrush, iArea); g.TranslateTransform(-shadowLength, -shadowLength); brush.SetEnvironment(innerArea, BrushX.GetEffectiveMaximumResolution(g, 1)); g.FillRectangle(brush, iArea); g.DrawRectangle(Pens.Black, iArea.Left, iArea.Top, iArea.Width, iArea.Height); }