public class SvgRenderOptions
Used with the SvgDocument.Render method to render an SVG document to a target device.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Drawing;
using Leadtools.Forms.DocumentWriters;
using Leadtools.Svg;
using Leadtools.Document.Writer;
public void SvgDocumentRenderExample()
{
// Create a form with a picture box
Form form = new Form();
PictureBox pictureBox = new PictureBox();
pictureBox.Dock = DockStyle.Fill;
form.Controls.Add(pictureBox);
SvgDocument document = null;
// Load a page from a document file as SVG
string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Leadtools.pdf");
using (var codecs = new RasterCodecs())
{
// Set 300 as the default value for loading document files
codecs.Options.RasterizeDocument.Load.Resolution = 300;
document = codecs.LoadSvg(srcFileName, 1, null) as SvgDocument;
}
// Make sure the document is valid for rendering
if (!document.IsFlat)
document.Flat(null);
if (!document.Bounds.IsValid)
document.CalculateBounds(false);
// Optimize it for rendering to increase the speed
document.BeginRenderOptimize();
Console.WriteLine("IsRenderOptimized is " + document.IsRenderOptimized);
// This is our paint code
pictureBox.Paint += (sender, e) =>
{
Graphics graphics = e.Graphics;
// We will fit and center this SVG document in the client area of the picture box
Rectangle dstBounds = pictureBox.ClientRectangle;
if (dstBounds.Width < 1 || dstBounds.Height < 1)
return;
// Create the transformation matrix
LeadMatrix transform = LeadMatrix.Identity;
LeadRectD srcBounds = document.Bounds.Bounds;
// Calculate the zoom so we can fit
double zoom = 1.0;
if (dstBounds.Width > dstBounds.Height)
{
zoom = dstBounds.Width / srcBounds.Width;
if ((zoom * srcBounds.Height) > dstBounds.Height)
zoom = dstBounds.Height / srcBounds.Height;
}
else
{
zoom = dstBounds.Height / srcBounds.Height;
if ((zoom * srcBounds.Width) > dstBounds.Width)
zoom = dstBounds.Width / srcBounds.Width;
}
// We have the zoom factor, set it in the transform
transform.Scale(zoom, zoom);
// Center
double xOffset = (dstBounds.Width - (zoom * srcBounds.Width)) / 2.0;
double yOffset = (dstBounds.Height - (zoom * srcBounds.Height)) / 2.0;
transform.Translate(xOffset, yOffset);
// Now setup the rendering options
SvgRenderOptions options = new SvgRenderOptions();
// Use our transform
options.Transform = transform;
// clipping (if any)
options.ClipBounds = LeadRectD.Create(e.ClipRectangle.X, e.ClipRectangle.Y, e.ClipRectangle.Width, e.ClipRectangle.Height);
// Fill the background with a white color
options.UseBackgroundColor = true;
options.BackgroundColor = RasterColor.FromKnownColor(RasterKnownColor.White);
options.Bounds = srcBounds;
// Create a rendering engine
using (var engine = RenderingEngineFactory.Create(graphics))
{
// Render the document
document.Render(engine, options);
}
};
form.SizeChanged += (sender, e) => pictureBox.Invalidate();
form.ShowDialog();
document.Dispose();
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}