PDFsharp用法:从头创建XForm对象

此示例演示如何从头创建XForm对象。您可以将这样的对象视为模板,一旦创建,就可以在PDF文档的任何位置频繁地绘制。

// 创建文档
PdfDocument document = new PdfDocument();
 
// 创建字体
XFont font = new XFont("Verdana", 16);
 
// 创建也
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
gfx.DrawString("XPdfForm Sample", font, 
  XBrushes.DarkGray, 15, 25, XStringFormat.Default);
 
// 第一步: Create an XForm and draw some graphics on it
 
//创建具有指定宽度和高度的空XForm对象

//窗体在创建时绑定到其目标文档。原因是

//窗体可以与其目标文档共享字体和其他对象。
XForm form = 
  new XForm(document, XUnit.FromMillimeter(70), XUnit.FromMillimeter(55));
 
// 创建用于绘制表单内容的XGRAPHICS对象。
XGraphics formGfx = XGraphics.FromForm(form);
 
// 绘制一个大的透明矩形以可视化窗体所占的区域
XColor back = XColors.Orange;
back.A = 0.2;
XSolidBrush brush = new XSolidBrush(back);
formGfx.DrawRectangle(brush, -10000, -10000, 20000, 20000);
 
 
// On a form you can draw...
 
// text
formGfx.DrawString("Text, Graphics, Images, and Forms", 
  new XFont("Verdana", 10, XFontStyle.Regular), XBrushes.Navy, 3, 0, 
            XStringFormat.TopLeft);
XPen pen = XPens.LightBlue.Clone();
pen.Width = 2.5;
 
//像B_zier曲线这样的图形
formGfx.DrawBeziers(pen, XPoint.ParsePoints("30,120 80,20, 100,140 175,33.3"));
 
// 光栅图像,如GIF文件
XGraphicsState state = formGfx.Save();
formGfx.RotateAtTransform(17, new XPoint(30, 30));
formGfx.DrawImage(XImage.FromFile("../../../../XGraphicsLab/images/Test.gif"), 
  20, 20);
formGfx.Restore(state);
 
//  以及类似xpdfform对象的窗体
state = formGfx.Save();
formGfx.RotateAtTransform(-8, new XPoint(165, 115));
formGfx.DrawImage(XPdfForm.FromFile("../../../../PDFs/SomeLayout.pdf"), 
  new XRect(140, 80, 50, 50 * Math.Sqrt(2)));
formGfx.Restore(state);
 
// 完成表单绘图后,请处置Xgraphic对象。
formGfx.Dispose();
 
 
//第二步: 在PDF页面上绘制xpdfform,就像图像一样
 
// 在文档页面上按原始大小绘制表单
gfx.DrawImage(form, 20, 50);
 
// 把它拉长
gfx.DrawImage(form, 300, 100, 250, 40);
 
//绘制并旋转
int d = 25;
for (int idx = 0; idx < 360; idx += d)
{
  gfx.DrawImage(form, 300, 480, 200, 200);
  gfx.RotateAtTransform(d, new XPoint(300, 480));
}
 
// 保存
string filename = "XForms.pdf";
document.Save(filename);
// 预览
Process.Start(filename);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值