zoukankan      html  css  js  c++  java
  • 基于COM的矢量图像控件VectorDraw

    VectorDraw Developer Framework (VDF) 是一个CAD图形引擎库,程序员可用于其应用程序的可视化。 通过所提供的功能,用户可以很轻松的创建、编辑、管理、导出和导入以及打印2D/3D的图形和图形文件。 VDF所采用的一种格式称为VDML(VDCL与VDML格式相同,只不过是压缩的)。此格式是基于XML的,支持定制的对象,不受构件版本的影响。 这个绘图引擎库还支持多种矢量和栅格格式的导入和导出,包括本机的SVG和PDF导出,它可以导出PDF中的图像。值得一提的是,VDF是完全面向对象 的,所以操作起来直观明了,非常容易上手。VDF支持.NET 2(包括ActiveX组件),它的第6个版本引擎是重新编写的,所有的集合算法都进行了重写。目前已经有 Windows CE 版本,并且推出了Sever授权。

    VDF从6.11版开始在PrinterRender对象中新增了一个方法:ExportMultiPagePDF,这个方法可以输出多页PDF文件。下面跟大家列举两种多页打印PDF的应用技巧。

    1、下面这个示例演示输出PDF文件单独页面的所有布局:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int numprinters = vdFramedControl.BaseControl.ActiveDocument.LayOuts.Count + 1;
    vdPrint []printers = new vdPrint[numprinters];
    int i = 0;
    printers[i] = vdFramedControl.BaseControl.ActiveDocument.Model.Printer;
    printers[i].PrintExtents();
    printers[i].PrintScaleToFit();
    i++;
    foreach (vdLayout layout in vdFramedControl.BaseControl.ActiveDocument.LayOuts)
    {
    printers[i] = layout.Printer;
    i++;
    }
    VectorDraw.Render.PrinterRender.ExportMultiPagePDF(new RenderFormats.PdfRender(), vdFramedControl.BaseControl.ActiveDocument, printers, @"C:\Documents and Settings\Administrator\Desktop\test.pdf");

    2、如果你的绘图没有布局,只有模型,想把多个PDF页面中的模型打印出来,那请参考下面的代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    int numprinters = 2; //two pages = two regions
    VectorDraw.Professional.vdObjects.vdPrint[] printers = new VectorDraw.Professional.vdObjects.vdPrint[numprinters];
    int i = 0;
     
    //set the first printer settings and printable area
    printers[i] = new VectorDraw.Professional.vdObjects.vdPrint(vdFramedC.BaseControl.ActiveDocument.Model.Printer);
    printers[i].PrintWindow = new VectorDraw.Geometry.Box(new VectorDraw.Geometry.gPoint(-2, -1), new VectorDraw.Geometry.gPoint(866, 1122));
    printers[i].PrintScaleToFit();
     
    //set the second printer settings and printable area
    i++;
    printers[i] = new VectorDraw.Professional.vdObjects.vdPrint(vdFramedC.BaseControl.ActiveDocument.Model.Printer);
    printers[i].PrintWindow = new VectorDraw.Geometry.Box(new VectorDraw.Geometry.gPoint(-2, -1458), new VectorDraw.Geometry.gPoint(866, -330));
    printers[i].PrintScaleToFit();
     
    //Export to PDF
    VectorDraw.Render.PrinterRender.ExportMultiPagePDF(new RenderFormats.PdfRender(), vdFramedC.BaseControl.ActiveDocument, printers, @"C:\testing\test1.pdf");
  • 相关阅读:
    CF1137FMatches Are Not a Child‘s Play【LCT】
    P4491[HAOI2018]染色【多项式,二项式反演】
    P3170[CQOI2015]标识设计【插头dp】
    log4j 使用教程说明
    log4j中Logger.getLogger()加载一个类提示错误
    编程基础 0x00008 的0x代表什么?
    编程基础 快速的进行 2进制,10进制,16进制 的 相互转换
    Java 基础 equals,hashcode和==的区别
    位运算 左移右移运算符 >>, <<, >>>
    Java 虚拟机 2.2 运行时数据区 Runtime Data Area
  • 原文地址:https://www.cnblogs.com/icebing/p/3093045.html
Copyright © 2011-2022 走看看