渲染方法
语法
公共无效呈现(IRenderingEngine引擎,SvgRenderOptions选项)
参数
例子
这个例子将一个页面从PDF文件转换为SVG格式和呈现形式。
使用Leadtools;
使用Leadtools.Codecs;
使用Leadtools.Drawing;
使用Leadtools.Forms.DocumentWriters;
使用Leadtools.Svg;
使用LeadtoolsExamples.Common;
公共无效SvgDocumentRenderExample ()
{
/ /创建一个窗体,带有一个图片框
表格形式=新形式();
图片框图片框=新图片框();
图片框。码头= DockStyle.Fill;
form.Controls.Add(图片框);
SvgDocument文档=零;
/ /加载一个页面从SVG文档文件
字符串srcFileName = Path.Combine (ImagesPath.Path,“Leadtools.pdf”);
使用(var编解码器=新RasterCodecs ())
{
/ /设置300作为加载文档文件的默认值
codecs.Options.RasterizeDocument.Load。分辨率= 300;
文档=编解码器。LoadSvg (srcFileName 1零)作为SvgDocument;
}
/ /确保文档是有效的呈现
如果(document.IsFlat !)
document.Flat (零);
如果(document.Bounds.IsValid !)
document.CalculateBounds (假);
/ /优化呈现增加的速度
document.BeginRenderOptimize ();
Console.WriteLine (“IsRenderOptimized”+ document.IsRenderOptimized);
/ /这是我们油漆代码
图片框。油漆+ =(发送方,e) = >
{
图形图像= e.Graphics;
/ /我们将配合和中心的SVG文档图片框的客户区
矩形dstBounds = pictureBox.ClientRectangle;
如果(dstBounds。宽度< 1||dstBounds。高度< 1)
返回;
/ /创建的变换矩阵
LeadMatrix变换= LeadMatrix.Identity;
LeadRectD srcBounds = document.Bounds.Bounds;
/ /计算放大我们可以配合
双变焦= 1.0;
如果(dstBounds。宽度> dstBounds.Height)
{
变焦= dstBounds。宽/ srcBounds.Width;
如果((变焦* srcBounds.Height) > dstBounds.Height)
变焦= dstBounds。高度/ srcBounds.Height;
}
其他的
{
变焦= dstBounds。高度/ srcBounds.Height;
如果((变焦* srcBounds.Width) > dstBounds.Width)
变焦= dstBounds。宽/ srcBounds.Width;
}
/ /我们有缩放因子,设置它的变换
变换。规模(放大、放大);
/ /中心
双xOffset = (dstBounds。(宽度)-放大* srcBounds.Width) / 2.0;
双yOffset = (dstBounds。(高度)-放大* srcBounds.Height) / 2.0;
变换。翻译(xOffset yOffset);
/ /设置渲染选项
SvgRenderOptions选项=新SvgRenderOptions ();
/ /使用我们的变换
选项。变换=变换;
/ /剪切(如果有的话)
选项。ClipBounds = LeadRectD.Create (e.ClipRectangle。X, e.ClipRectangle。Y, e.ClipRectangle。宽度,e.ClipRectangle.Height);
/ /填充背景颜色呈白色
选项。使用写成BackgroundColor=真正的;
选项。写成BackgroundColor = RasterColor.FromKnownColor (RasterKnownColor.White);
选项。边界= srcBounds;
/ /创建一个渲染引擎
使用(var引擎= RenderingEngineFactory.Create(图形))
{
/ /渲染文档
文档。呈现(引擎,选项);
}
};
的形式。SizeChanged + =(发送方,e) = > pictureBox.Invalidate ();
form.ShowDialog ();
document.Dispose ();
}
进口Leadtools
进口Leadtools.Codecs
进口Leadtools.Drawing
进口Leadtools.Forms.DocumentWriters
进口Leadtools.Svg
公共共享子SvgDocumentRenderExample ()
“创建一个窗体,带有一个图片框
昏暗的形式作为新形式()
昏暗的图片框作为新图片框()
图片框。码头= DockStyle.Fill
form.Controls.Add(图片框)
昏暗的文档作为SvgDocument =没有什么
“加载一个页面从SVG文档文件
昏暗的srcFileName作为字符串= Path.Combine (Common.ImagesPath.Path“Leadtools.pdf”)
使用编解码器作为新RasterCodecs ()
“300设置为默认值加载文档文件
codecs.Options.RasterizeDocument.Load。分辨率= 300
文档=DirectCast(编解码器。LoadSvg (srcFileName 1没有什么),SvgDocument)
结束使用
确保文档是有效的呈现
如果不document.IsFlat然后
document.Flat (没有什么)
结束如果
如果不document.Bounds.IsValid然后
document.CalculateBounds (假)
结束如果
优化它的呈现增加的速度
document.BeginRenderOptimize ()
Console.WriteLine (“IsRenderOptimized”+ document.IsRenderOptimized.ToString ())
“这是我们的油漆代码
AddHandlerpictureBox.Paint,
子(发送方作为对象e作为PaintEventArgs)
昏暗的图形作为图形= e.Graphics
我们将配合和中心的SVG文档图片框的客户区
昏暗的dstBounds作为矩形= pictureBox.ClientRectangle
如果dstBounds。宽度< 1OrElsedstBounds。高度< 1然后
返回
结束如果
“创建的变换矩阵
昏暗的变换作为LeadMatrix = LeadMatrix.Identity
昏暗的srcBounds作为LeadRectD = document.Bounds.Bounds
”放大,所以我们可以计算
昏暗的变焦作为双= 1.0
如果dstBounds。宽度> dstBounds.Height然后
变焦= dstBounds。宽/ srcBounds.Width
如果(放大* srcBounds.Height) > dstBounds.Height然后
变焦= dstBounds。高度/ srcBounds.Height
结束如果
其他的
变焦= dstBounds。高度/ srcBounds.Height
如果(放大* srcBounds.Width) > dstBounds.Width然后
变焦= dstBounds。宽/ srcBounds.Width
结束如果
结束如果
我们放大因子,设置它的变换
变换。量表(放大、放大)
的中心
昏暗的xOffset作为双= (dstBounds。(宽度)-放大* srcBounds.Width) / 2.0
昏暗的yOffset作为双= (dstBounds。高度-(变焦* srcBounds.Height)) / 2.0
变换。翻译(xOffset yOffset)
“现在设置渲染选项
昏暗的选项作为新SvgRenderOptions ()
“所有的文档
选项。边界= srcBounds
使用我们的变换
选项。变换=变换
“剪切(如果有的话)
选项。ClipBounds = LeadRectD.Create (e.ClipRectangle。X, e.ClipRectangle。Y, e.ClipRectangle。宽度,e.ClipRectangle.Height)
把背景填充白色
选项。使用写成BackgroundColor=真正的
选项。写成BackgroundColor = RasterColor.FromKnownColor (RasterKnownColor.White)
创建渲染引擎
使用引擎作为IRenderingEngine = RenderingEngineFactory.Create(图形)
文档的呈现
文档。呈现(引擎,选项)
结束使用
结束子
AddHandlerform.SizeChanged,
子(发送方作为对象e作为EventArgs)
pictureBox.Invalidate ()
结束子
form.ShowDialog ()
document.Dispose ()
结束子