void RenderTextAlignment(XGraphics gfx) { gfx.TranslateTransform(15, 20); XRect rect = new XRect(0, 0, 250, 140); XFont font = new XFont("Verdana", 10); XBrush brush = XBrushes.Purple; XStringFormat format = new XStringFormat(); gfx.DrawRectangle(XPens.YellowGreen, rect); gfx.DrawLine(XPens.YellowGreen, rect.Width / 2, 0, rect.Width / 2, rect.Height); gfx.DrawLine(XPens.YellowGreen, 0, rect.Height / 2, rect.Width, rect.Height / 2); #if true gfx.DrawString("TopLeft", font, brush, rect, format); format.Alignment = XStringAlignment.Center; gfx.DrawString("TopCenter", font, brush, rect, format); format.Alignment = XStringAlignment.Far; gfx.DrawString("TopRight", font, brush, rect, format); format.LineAlignment = XLineAlignment.Center; format.Alignment = XStringAlignment.Near; gfx.DrawString("CenterLeft", font, brush, rect, format); format.Alignment = XStringAlignment.Center; gfx.DrawString("Center", font, brush, rect, format); format.Alignment = XStringAlignment.Far; gfx.DrawString("CenterRight", font, brush, rect, format); format.LineAlignment = XLineAlignment.Far; format.Alignment = XStringAlignment.Near; gfx.DrawString("BottomLeft", font, brush, rect, format); format.Alignment = XStringAlignment.Center; gfx.DrawString("BottomCenter", font, brush, rect, format); format.Alignment = XStringAlignment.Far; gfx.DrawString("BottomRight", font, brush, rect, format); #else format.Alignment = XStringAlignment.Far; gfx.DrawString("TopRight", font, brush, rect, format); #endif }
/// <summary> /// Demonstrates the use of XLinearGradientBrush. /// </summary> public override void RenderPage(XGraphics gfx) { base.RenderPage(gfx); XRect rect; XLinearGradientBrush brush; Graphics grfx = gfx.Internals.Graphics; XLinearGradientBrush brush2 = new XLinearGradientBrush( new XPoint(100, 100), new XPoint(300, 300), XColors.DarkRed, XColors.Yellow); //gfx.FillRectangle(brush, 0, 0, 600, 600); //gfx.TranslateTransform(35, 200); //gfx.RotateTransform(17); rect = new XRect(20, 50, 100, 200); brush = new XLinearGradientBrush(rect, XColors.DarkRed, XColors.Yellow, XLinearGradientMode.Horizontal); gfx.DrawRectangle(XPens.Red, brush, rect); rect = new XRect(140, 50, 100, 200); brush = new XLinearGradientBrush(rect, XColors.DarkRed, XColors.Yellow, XLinearGradientMode.Vertical); gfx.DrawRectangle(XPens.Red, brush, rect); rect = new XRect(260, 50, 100, 200); brush = new XLinearGradientBrush(rect, XColors.DarkRed, XColors.Yellow, XLinearGradientMode.ForwardDiagonal); gfx.DrawRectangle(XPens.Red, brush, rect); rect = new XRect(380, 50, 100, 200); brush = new XLinearGradientBrush(rect, XColors.DarkRed, XColors.Yellow, XLinearGradientMode.BackwardDiagonal); gfx.DrawRectangle(XPens.Red, brush, rect); gfx.TranslateTransform(80, 250); gfx.ScaleTransform(1.1); gfx.RotateTransform(20); rect = new XRect(20, 50, 100, 200); brush = new XLinearGradientBrush(rect, XColors.Orange, XColors.DarkBlue, XLinearGradientMode.Horizontal); gfx.DrawRectangle(XPens.Red, brush, rect); rect = new XRect(140, 50, 100, 200); brush = new XLinearGradientBrush(rect, XColors.Orange, XColors.DarkBlue, XLinearGradientMode.Vertical); gfx.DrawRectangle(XPens.Red, brush, rect); rect = new XRect(260, 50, 100, 200); brush = new XLinearGradientBrush(rect, XColors.Orange, XColors.DarkBlue, XLinearGradientMode.ForwardDiagonal); gfx.DrawRectangle(XPens.Red, brush, rect); rect = new XRect(380, 50, 100, 200); brush = new XLinearGradientBrush(rect, XColors.Orange, XColors.DarkBlue, XLinearGradientMode.BackwardDiagonal); gfx.DrawRectangle(XPens.Red, brush, rect); }
/// <summary> /// Draws Arcs. /// </summary> void RenderArcs(XGraphics gfx) { gfx.TranslateTransform(15, 20); XPen pen = new XPen(XColors.Plum, 4.7); gfx.DrawArc(pen, 0, 0, 250, 140, 190, 200); }
/// <summary> /// Draws simple lines. /// </summary> void RenderLines(XGraphics gfx) { gfx.TranslateTransform(15, 20); gfx.DrawLine(XPens.Red, new XPoint(10, 10), new XPoint(300, 300)); gfx.DrawLine(XPens.DarkGreen, 0, 0, 250, 0); gfx.DrawLine(XPens.Gold, 15, 7, 230, 15); XPen pen = new XPen(XColors.Navy, 4); gfx.DrawLine(pen, 0, 20, 250, 20); pen = new XPen(XColors.Firebrick, 6); pen.DashStyle = XDashStyle.Dash; gfx.DrawLine(pen, 0, 40, 250, 40); pen.Width = 7.3; pen.DashStyle = XDashStyle.DashDotDot; gfx.DrawLine(pen, 0, 60, 250, 60); pen = new XPen(XColors.Goldenrod, 10); pen.LineCap = XLineCap.Flat; gfx.DrawLine(pen, 10, 90, 240, 90); gfx.DrawLine(XPens.Black, 10, 90, 240, 90); pen = new XPen(XColors.Goldenrod, 10); pen.LineCap = XLineCap.Square; gfx.DrawLine(pen, 10, 110, 240, 110); gfx.DrawLine(XPens.Black, 10, 110, 240, 110); pen = new XPen(XColors.Goldenrod, 10); pen.LineCap = XLineCap.Round; gfx.DrawLine(pen, 10, 130, 240, 130); gfx.DrawLine(XPens.Black, 10, 130, 240, 130); }
/// <summary> /// Draws a sample box. /// </summary> public void BeginBox(XGraphics gfx, int number) { //obracene XY gfx.RotateAtTransform(90.0, new XPoint(height / 4, width / 4)); gfx.TranslateTransform(+62, +63); //const int dEllipse = 15; XRect rect = new XRect(0, 0, height /2 -2, width/2 -2); if (number % 2 == 0) rect.X += height/2 +2; rect.Y = ((number - 1) / 2) * (-width/2 - 3); //rect.Inflate(-10, -10); //XRect rect2 = rect; XPen pen = new XPen(XColors.Black, 1); gfx.DrawRectangle(pen, rect.X, rect.Y, rect.Width, rect.Height); //rect2.Offset(this.borderWidth, this.borderWidth); //gfx.DrawRoundedRectangle(new XSolidBrush(this.shadowColor), rect2, new XSize(dEllipse + 8, dEllipse + 8)); //XLinearGradientBrush brush = new XLinearGradientBrush(rect, this.backColor, this.backColor2, XLinearGradientMode.Vertical); //gfx.DrawRoundedRectangle(this.borderPen, brush, rect, new XSize(dEllipse, dEllipse)); //rect.Inflate(-5, -5); //rect.Inflate(-10, -5); //rect.Y += 20; //rect.Height -= 20; ////gfx.DrawRectangle(XPens.Red, rect); // gfx.TranslateTransform(rect.X, rect.Y); this.state = gfx.Save(); }
/// <summary> /// Draws curves. /// </summary> void RenderCurves(XGraphics gfx) { gfx.TranslateTransform(15, 20); XPoint[] points = { new XPoint(20, 30), new XPoint(60, 120), new XPoint(90, 20), new XPoint(170, 90), new XPoint(230, 40) }; XPen pen = new XPen(XColors.RoyalBlue, 3.5); gfx.DrawCurve(pen, points, 1); }
void RenderClosedCurves(XGraphics gfx) { gfx.TranslateTransform(15, 20); XPen pen = new XPen(XColors.DarkBlue, 2.5); gfx.DrawClosedCurve(pen, XBrushes.SkyBlue, new XPoint[] { new XPoint(10, 120), new XPoint(80, 30), new XPoint(220, 20), new XPoint(170, 110), new XPoint(100, 90) }, XFillMode.Winding, 0.7); }
void RenderPolygons(XGraphics gfx) { gfx.TranslateTransform(15, 20); XPen pen = new XPen(XColors.DarkBlue, 2.5); gfx.DrawPolygon(pen, XBrushes.LightCoral, GeometryObjects.GetPentagram(50, new XPoint(60, 70)), XFillMode.Winding); gfx.DrawPolygon(pen, XBrushes.LightCoral, GeometryObjects.GetPentagram(50, new XPoint(180, 70)), XFillMode.Alternate); }
/// <summary> /// Draws Bézier curves. /// </summary> void RenderBéziers(XGraphics gfx) { gfx.TranslateTransform(15, 20); XPoint[] points = {new XPoint(20, 30), new XPoint(40, 120), new XPoint(80, 20), new XPoint(110, 90), new XPoint(180, 40), new XPoint(210, 40), new XPoint(220, 80)}; XPen pen = new XPen(XColors.Firebrick, 4); //pen.DashStyle = XDashStyle.Dot; gfx.DrawBeziers(pen, points); }
void RenderPies(XGraphics gfx) { gfx.TranslateTransform(15, 20); XPen pen = new XPen(XColors.DarkBlue, 2.5); gfx.DrawPie(pen, 10, 0, 100, 90, -120, 75); gfx.DrawPie(XBrushes.Gold, 130, 0, 100, 90, -160, 150); gfx.DrawPie(pen, XBrushes.Gold, 10, 50, 100, 90, 80, 70); gfx.DrawPie(pen, XBrushes.Gold, 150, 80, 60, 60, 35, 290); }
void RenderRoundedRectangles(XGraphics gfx) { gfx.TranslateTransform(15, 20); XPen pen = new XPen(XColors.RoyalBlue, Math.PI); gfx.DrawRoundedRectangle(pen, 10, 0, 100, 60, 30, 20); gfx.DrawRoundedRectangle(XBrushes.Orange, 130, 0, 100, 60, 30, 20); gfx.DrawRoundedRectangle(pen, XBrushes.Orange, 10, 80, 100, 60, 30, 20); gfx.DrawRoundedRectangle(pen, XBrushes.Orange, 150, 80, 60, 60, 20, 20); }
void RenderEllipses(XGraphics gfx) { gfx.TranslateTransform(15, 20); XPen pen = new XPen(XColors.Navy, Math.PI); gfx.DrawRectangle(pen, 10, 0, 100, 60); gfx.DrawRectangle(XBrushes.DarkOrange, 130, 0, 100, 60); gfx.DrawRectangle(pen, XBrushes.DarkOrange, 10, 80, 100, 60); gfx.DrawRectangle(pen, XBrushes.DarkOrange, 150, 80, 60, 60); }
void RenderOpenPath(XGraphics gfx) { gfx.TranslateTransform(15, 20); XPen pen = new XPen(XColors.Navy, Math.PI); pen.DashStyle = XDashStyle.Dash; XGraphicsPath path = new XGraphicsPath(); path.AddLine(10, 120, 50, 60); path.AddArc(50, 20, 110, 80, 180, 180); path.AddLine(160, 60, 220, 100); gfx.DrawPath(pen, path); }
void RenderAlternatePath(XGraphics gfx) { gfx.TranslateTransform(15, 20); XPen pen = new XPen(XColors.Navy, 2.5); // Alternate fill mode XGraphicsPath path = new XGraphicsPath(); path.FillMode = XFillMode.Alternate; path.AddLine(10, 130, 10, 40); path.AddBeziers(new XPoint[]{new XPoint(10, 40), new XPoint(30, 0), new XPoint(40, 20), new XPoint(60, 40), new XPoint(80, 60), new XPoint(100, 60), new XPoint(120, 40)}); path.AddLine(120, 40, 120, 130); path.CloseFigure(); path.AddEllipse(40, 80, 50, 40); gfx.DrawPath(pen, XBrushes.DarkOrange, path); }
/// <summary> /// Demonstrates the use of XGraphics.Transform. /// </summary> public override void RenderPage(XGraphics gfx) { //gfx.Clear(this.properties.General.BackColor.Color); base.RenderPage(gfx); gfx.DrawLine(XPens.MediumSlateBlue, 0, 0, 150, 200); gfx.DrawPolygon(properties.Pen1.Pen, GetPentagram(75, new PointF(150, 200))); Matrix matrix = new Matrix(); //matrix.Scale(2f, 1.5f); //matrix.Translate(-200, -400); //matrix.Rotate(45); //matrix.Translate(200, 400); //gfx.Transform = matrix; //gfx.TranslateTransform(50, 30); #if true gfx.TranslateTransform(30, 40, XMatrixOrder.Prepend); gfx.ScaleTransform(2.0f, 2.0f, XMatrixOrder.Prepend); gfx.RotateTransform(15, XMatrixOrder.Prepend); #else gfx.TranslateTransform(30, 40, XMatrixOrder.Append); gfx.ScaleTransform(2.0f, 2.0f, XMatrixOrder.Append); gfx.RotateTransform(15, XMatrixOrder.Append); #endif bool id = matrix.IsIdentity; matrix.Scale(2.0f, 2.0f, MatrixOrder.Prepend); //matrix.Translate(30, -50); matrix.Rotate(15, MatrixOrder.Prepend); //Matrix mtx = gfx.Transform.ToGdiMatrix(); //gfx.Transform = matrix; gfx.DrawLine(XPens.MediumSlateBlue, 0, 0, 150, 200); gfx.DrawPolygon(properties.Pen2.Pen, GetPentagram(75, new PointF(150, 200))); }
/// <summary> /// Demonstrates the use of XGraphics.Transform. /// </summary> public override void RenderPage(XGraphics gfx) { base.RenderPage(gfx); //XGraphicsState state = gfx.Save(); gfx.Save(); gfx.IntersectClip(new XRect(20, 20, 300, 500)); gfx.DrawRectangle(XBrushes.Yellow, 0, 0, gfx.PageSize.Width, gfx.PageSize.Height); gfx.Restore(); gfx.Save(); gfx.IntersectClip(new XRect(100, 200, 300, 500)); gfx.DrawRectangle(XBrushes.LightBlue, 0, 0, gfx.PageSize.Width, gfx.PageSize.Height); gfx.DrawLine(XPens.MediumSlateBlue, 0, 0, 150, 200); gfx.DrawPolygon(properties.Pen1.Pen, GetPentagram(75, new PointF(150, 200))); Matrix matrix = new Matrix(); //matrix.Scale(2f, 1.5f); //matrix.Translate(-200, -400); //matrix.Rotate(45); //matrix.Translate(200, 400); //gfx.Transform = matrix; //gfx.TranslateTransform(50, 30); #if true gfx.TranslateTransform(30, 40, XMatrixOrder.Prepend); gfx.ScaleTransform(2.0f, 2.0f, XMatrixOrder.Prepend); gfx.RotateTransform(15, XMatrixOrder.Prepend); #else gfx.TranslateTransform(30, 40, XMatrixOrder.Append); gfx.ScaleTransform(2.0f, 2.0f, XMatrixOrder.Append); gfx.RotateTransform(15, XMatrixOrder.Append); #endif bool id = matrix.IsIdentity; matrix.Scale(2.0f, 2.0f, MatrixOrder.Prepend); //matrix.Translate(30, -50); matrix.Rotate(15, MatrixOrder.Prepend); //Matrix mtx = gfx.Transform.ToGdiMatrix(); //gfx.Transform = matrix; gfx.DrawLine(XPens.MediumSlateBlue, 0, 0, 150, 200); gfx.DrawPolygon(properties.Pen2.Pen, GetPentagram(75, new PointF(150, 200))); gfx.Restore(); gfx.DrawLine(XPens.Red, 0, 0, 1000, 1000); gfx.DrawPolygon(XPens.SandyBrown, GetPentagram(75, new PointF(150, 200))); }
void RenderMeasureText(XGraphics gfx) { gfx.TranslateTransform(15, 20); XFontStyle style = XFontStyle.Regular; XFont font = new XFont("Times New Roman", 95, style); string text = "Hello"; double x = 20, y = 100; XSize size = gfx.MeasureString(text, font); double lineSpace = font.GetHeight(gfx); int cellSpace = font.FontFamily.GetLineSpacing(style); int cellAscent = font.FontFamily.GetCellAscent(style); int cellDescent = font.FontFamily.GetCellDescent(style); int cellLeading = cellSpace - cellAscent - cellDescent; // Get effective ascent double ascent = lineSpace * cellAscent / cellSpace; gfx.DrawRectangle(XBrushes.Bisque, x, y - ascent, size.Width, ascent); // Get effective descent double descent = lineSpace * cellDescent / cellSpace; gfx.DrawRectangle(XBrushes.LightGreen, x, y, size.Width, descent); // Get effective leading double leading = lineSpace * cellLeading / cellSpace; gfx.DrawRectangle(XBrushes.Yellow, x, y + descent, size.Width, leading); // Draw text half transparent XColor color = XColors.DarkSlateBlue; color.A = 0.6; gfx.DrawString(text, font, new XSolidBrush(color), x, y); }
/// <summary> /// Demonstrates the use of XGraphics.DrawImage. /// </summary> public override void RenderPage(XGraphics gfx) { base.RenderPage(gfx); XImage image = XImage.FromFile(@"..\..\images\Test (OS2).bmp"); double dx = gfx.PageSize.Width; double dy = gfx.PageSize.Height; #if true gfx.TranslateTransform(dx / 2, dy / 2); gfx.RotateTransform(-60); gfx.TranslateTransform(-dx / 2, -dy / 2); #endif gfx.DrawImage(image, (dx - image.PixelWidth) / 2, (dy - image.PixelHeight) / 2, image.PixelWidth, image.PixelHeight); }
void RenderGlyphsPath(XGraphics gfx) { gfx.TranslateTransform(15, 20); XGraphicsPath path = new XGraphicsPath(); //path.AddString("Hello!", new XFontFamily("Times New Roman"), XFontStyle.BoldItalic, 100, new XRect(0, 0, 250, 140), // XStringFormat.Center); path.AddString("Hello!", new XFontFamily("Times New Roman"), XFontStyle.BoldItalic, 100, new XRect(0, 0, 250, 140), XStringFormats.Center); gfx.DrawPath(new XPen(XColors.Purple, 2.3), XBrushes.DarkOrchid, path); }
/// <summary> /// Demonstrates the use of XGraphics.SetClip. /// </summary> public override void RenderPage(XGraphics gfx) { base.RenderPage(gfx); gfx.Save(); gfx.TranslateTransform(50, 50); gfx.IntersectClip(new Rectangle(0, 0, 400, 250)); gfx.TranslateTransform(50, 50); //gfx.Clear(XColor.GhostWhite); gfx.DrawEllipse(XPens.Green, XBrushes.Yellow, 40, 40, 500, 500); gfx.Restore(); gfx.Save(); //gfx.Transform = new XMatrix(); //XMatrix.Identity; gfx.TranslateTransform(200, 200); gfx.IntersectClip(new Rectangle(0, 0, 400, 250)); gfx.DrawEllipse(XPens.Green, XBrushes.Yellow, 40, 40, 500, 500); gfx.Restore(); }
void RenderGIFs(XGraphics gfx) { gfx.TranslateTransform(15, 20); XImage image = XImage.FromFile(gifSamplePath); // Left position in point double x = (250 - image.PixelWidth * 72 / image.HorizontalResolution) / 2; gfx.DrawImage(image, x, 0); }
/// <summary> /// Source and more infos: http://www.math.dartmouth.edu/~dlittle/java/SpiroGraph/ /// </summary> public override void RenderPage(XGraphics gfx) { base.RenderPage(gfx); //int R = 60, r = 60, p = 60, N = 270; // Cardioid //int R = 60, r = -45, p = -101, N = 270; // Rounded Square //int R = 75, r = -25, p = 85, N = 270; // Gold fish //int R = 75, r = -30, p = 60, N = 270; // Star fish //int R = 100, r = 49, p = 66, N = 7; // String of Pearls //int R = 90, r = 1, p = 105, N = 105; // Rotating Triangle //int R = 90, r = 1, p = 105, N = 105; int R = 60, r = 2, p = 122, N = 490; int revs = Math.Abs(r) / Gcd(R, Math.Abs(r)); XPoint[] points = new XPoint[revs * N + 1]; for (int i = 0; i <= revs * N; i++) { double t = 4 * i * Math.PI / N; points[i].X = ((R+r)*Math.Cos(t) - p * Math.Cos((R+r)* t / r)); points[i].Y = ((R+r)*Math.Sin(t) - p * Math.Sin((R+r)* t / r)); } #if true // Draw as lines gfx.TranslateTransform(300, 250); gfx.DrawLines(properties.Pen2.Pen, points); //gfx.DrawPolygon(properties.Pen2.Pen, properties.Brush2.Brush, points, properties.General.FillMode); // Draw as closed curve gfx.TranslateTransform(0, 400); gfx.DrawClosedCurve(properties.Pen2.Pen, properties.Brush2.Brush, points, properties.General.FillMode, properties.General.Tension); #else gfx.TranslateTransform(300, 400); XSolidBrush dotBrush = new XSolidBrush(properties.Pen2.Pen.Color); float width = properties.Pen2.Width; for (int i = 0; i < revs * N; i++) gfx.DrawEllipse(dotBrush,points[i].X, points[i].Y, width, width); #endif }
void InitializeCoordinates(XGraphics gfx) { double width = 600; double height = 800; gfx.TranslateTransform(width / 2, height / 2); //float fInches = Math.Min(width / gfx.DpiX, height / gfx.DpiY); double fInches = Math.Min(width, height); gfx.ScaleTransform(fInches * 1 / 2000); }
void RenderTextStyles(XGraphics gfx) { gfx.TranslateTransform(15, 20); string facename = "Times New Roman"; XFont fontRegular = new XFont(facename, 20); XFont fontBold = new XFont(facename, 20, XFontStyle.Bold); XFont fontItalic = new XFont(facename, 20, XFontStyle.Italic); XFont fontBoldItalic = new XFont(facename, 20, XFontStyle.BoldItalic); // The default alignment is baseline left (that differs from GDI+) gfx.DrawString("Times (regular)", fontRegular, XBrushes.DarkSlateGray, 0, 30); gfx.DrawString("Times (bold)", fontBold, XBrushes.DarkSlateGray, 0, 65); gfx.DrawString("Times (italic)", fontItalic, XBrushes.DarkSlateGray, 0, 100); gfx.DrawString("Times (bold italic)", fontBoldItalic, XBrushes.DarkSlateGray, 0, 135); }
void RenderClipPath(XGraphics gfx) { gfx.TranslateTransform(15, 20); XGraphicsPath path = new XGraphicsPath(); path.AddString("Clip!", new XFontFamily("Verdana"), XFontStyle.Bold, 90, new XRect(0, 0, 250, 140), XStringFormats.Center); gfx.IntersectClip(path); gfx.DrawRectangle(XBrushes.LightSalmon, new XRect(0, 0, 10000, 10000)); // Draw a beam of dotted lines XPen pen = XPens.DarkRed.Clone(); pen.DashStyle = XDashStyle.Dot; for (double r = 0; r <= 90; r += 0.5) gfx.DrawLine(pen, 0, 0, 1000 * Math.Cos(r / 90 * Math.PI), 1000 * Math.Sin(r / 90 * Math.PI)); }
static void RenderTextStyles(XGraphics gfx) { gfx.TranslateTransform(15, 20); XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always); const string facename = "Times New Roman"; XFont fontRegular = new XFont(facename, 20, XFontStyle.Regular, options); XFont fontBold = new XFont(facename, 20, XFontStyle.Bold, options); XFont fontItalic = new XFont(facename, 20, XFontStyle.Italic, options); XFont fontBoldItalic = new XFont(facename, 20, XFontStyle.BoldItalic, options); // The default alignment is baseline left (that differs from GDI+) gfx.DrawString(facename +" (regular)", fontRegular, XBrushes.DarkSlateGray, 0, 30); gfx.DrawString(facename + " (bold)", fontBold, XBrushes.DarkSlateGray, 0, 65); gfx.DrawString(facename + " (italic)", fontItalic, XBrushes.DarkSlateGray, 0, 100); gfx.DrawString(facename +" (bold italic)", fontBoldItalic, XBrushes.DarkSlateGray, 0, 135); }
void RenderWindingPath(XGraphics gfx) { gfx.TranslateTransform(15, 150); XPen pen = new XPen(XColors.Navy, 2.5); // Winding fill mode XGraphicsPath path = new XGraphicsPath(); path = new XGraphicsPath(); path.FillMode = XFillMode.Winding; path.AddLine(130, 130, 130, 40); path.AddBeziers(new XPoint[]{new XPoint(130, 40), new XPoint(150, 0), new XPoint(160, 20), new XPoint(180, 40), new XPoint(200, 60), new XPoint(220, 60), new XPoint(240, 40)}); path.AddLine(240, 40, 240, 130); path.CloseFigure(); path.AddEllipse(160, 80, 50, 40); gfx.DrawPath(pen, XBrushes.DarkOrange, path); }
static void RenderTextStyles(XGraphics gfx) { gfx.TranslateTransform(15, 20); const string facename = "Segoe UI"; //const string facename = "Frutiger LT 55 Roman,Frutiger LT 45 Light"; XFont fontRegular = new XFont(facename, 20); XFont fontBold = new XFont(facename, 20, XFontStyle.Bold); XFont fontItalic = new XFont(facename, 20, XFontStyle.Italic); XFont fontBoldItalic = new XFont(facename, 20, XFontStyle.BoldItalic); // The default alignment is baseline left (that differs from GDI+) gfx.DrawString(facename + " (regular)", fontRegular, XBrushes.DarkSlateGray, 0, 30); gfx.DrawString(facename + " (bold)", fontBold, XBrushes.DarkSlateGray, 0, 65); gfx.DrawString(facename + " (italic)", fontItalic, XBrushes.DarkSlateGray, 0, 100); gfx.DrawString(facename + " (bold italic)", fontBoldItalic, XBrushes.DarkSlateGray, 0, 135); }
public static void Test(PdfSharp.Drawing.XGraphics gfx) { XRect rect; XPen pen; double x = 50, y = 100; XFont fontH1 = new XFont("Times", 18, XFontStyle.Bold); XFont font = new XFont("Times", 12); XFont fontItalic = new XFont("Times", 12, XFontStyle.BoldItalic); double ls = font.GetHeight(gfx); // Draw some text gfx.DrawString("Create PDF on the fly with PDFsharp", fontH1, XBrushes.Black, x, x); gfx.DrawString("With PDFsharp you can use the same code to draw graphic, " + "text and images on different targets.", font, XBrushes.Black, x, y); y += ls; gfx.DrawString("The object used for drawing is the XGraphics object.", font, XBrushes.Black, x, y); y += 2 * ls; // Draw an arc pen = new XPen(XColors.Red, 4); pen.DashStyle = XDashStyle.Dash; gfx.DrawArc(pen, x + 20, y, 100, 60, 150, 120); // Draw a star XGraphicsState gs = gfx.Save(); gfx.TranslateTransform(x + 140, y + 30); for (int idx = 0; idx < 360; idx += 10) { gfx.RotateTransform(10); gfx.DrawLine(XPens.DarkGreen, 0, 0, 30, 0); } gfx.Restore(gs); // Draw a rounded rectangle rect = new XRect(x + 230, y, 100, 60); pen = new XPen(XColors.DarkBlue, 2.5); XColor color1 = XColor.FromKnownColor(System.Drawing.KnownColor.DarkBlue); XColor color2 = XColors.Red; XLinearGradientBrush lbrush = new XLinearGradientBrush(rect, color1, color2, XLinearGradientMode.Vertical); gfx.DrawRoundedRectangle(pen, lbrush, rect, new XSize(10, 10)); // Draw a pie pen = new XPen(XColors.DarkOrange, 1.5); pen.DashStyle = XDashStyle.Dot; gfx.DrawPie(pen, XBrushes.Blue, x + 360, y, 100, 60, -130, 135); // Draw some more text y += 60 + 2 * ls; gfx.DrawString("With XGraphics you can draw on a PDF page as well as " + "on any System.Drawing.Graphics object.", font, XBrushes.Black, x, y); y += ls * 1.1; gfx.DrawString("Use the same code to", font, XBrushes.Black, x, y); x += 10; y += ls * 1.1; gfx.DrawString("• draw on a newly created PDF page", font, XBrushes.Black, x, y); y += ls; gfx.DrawString("• draw above or beneath of the content of an existing PDF page", font, XBrushes.Black, x, y); y += ls; gfx.DrawString("• draw in a window", font, XBrushes.Black, x, y); y += ls; gfx.DrawString("• draw on a printer", font, XBrushes.Black, x, y); y += ls; gfx.DrawString("• draw in a bitmap image", font, XBrushes.Black, x, y); x -= 10; y += ls * 1.1; gfx.DrawString("You can also import an existing PDF page and use it like " + "an image, e.g. draw it on another PDF page.", font, XBrushes.Black, x, y); y += ls * 1.1 * 2; gfx.DrawString("Imported PDF pages are neither drawn nor printed; create a " + "PDF file to see or print them!", fontItalic, XBrushes.Firebrick, x, y); y += ls * 1.1; gfx.DrawString("Below this text is a PDF form that will be visible when " + "viewed or printed with a PDF viewer.", fontItalic, XBrushes.Firebrick, x, y); y += ls * 1.1; XGraphicsState state = gfx.Save(); XRect rcImage = new XRect(100, y, 100, 100 * System.Math.Sqrt(2)); gfx.DrawRectangle(XBrushes.Snow, rcImage); gfx.DrawImage(XPdfForm.FromFile("../../../../../PDFs/SomeLayout.pdf"), rcImage); gfx.Restore(state); }
public static void BeginBox(XGraphics gfx, int number, string title, double borderWidth, double borderHeight, XColor shadowColor, XColor backColor, XColor backColor2, XPen borderPen) { const int dEllipse = 15; XRect rect = new XRect(0, 20, 300, 200); if (number % 2 == 0) rect.X = 300 - 5; rect.Y = 40 + ((number - 1) / 2) * (200 - 5); rect.Inflate(-10, -10); XRect rect2 = rect; rect2.Offset(borderWidth, borderHeight); gfx.DrawRoundedRectangle(new XSolidBrush(shadowColor), rect2, new XSize(dEllipse + 8, dEllipse + 8)); XLinearGradientBrush brush = new XLinearGradientBrush(rect, backColor, backColor2, XLinearGradientMode.Vertical); gfx.DrawRoundedRectangle(borderPen, brush, rect, new XSize(dEllipse, dEllipse)); rect.Inflate(-5, -5); XFont font = new XFont("Verdana", 12, XFontStyle.Regular); gfx.DrawString(title, font, XBrushes.Navy, rect, XStringFormats.TopCenter); rect.Inflate(-10, -5); rect.Y += 20; rect.Height -= 20; state = gfx.Save(); gfx.TranslateTransform(rect.X, rect.Y); }
public override void RenderPage(XGraphics gfx) { base.RenderPage(gfx); XImage image = XImage.FromFile(@"..\..\..\..\samples\PDFs\SomeLayout.pdf"); double dx = gfx.PageSize.Width; double dy = gfx.PageSize.Height; #if true gfx.TranslateTransform(dx / 2, dy / 2); gfx.RotateTransform(-25); gfx.TranslateTransform(-dx / 2, -dy / 2); #endif gfx.DrawImage(image, (dx - image.PixelWidth) / 2, (dy - image.PixelHeight) / 2, image.PixelWidth, image.PixelHeight); }