使用iTextSharp在PDF上绘制矢量图形(填充带孔的路径)

时间:2013-11-01 01:54:53

标签: c# itextsharp vector-graphics

我使用iTextSharp.text.pdf.PdfContentByte方法绘制从svg到pdf的一些路径:moveTo,LineTo和CurveTo。它适用于简单路径,但有些路径有切割方块。 例如

<path
   style="fill:#1034ff;fill-opacity:1;fill-rule:evenodd;stroke:none"
   d="m 128.5625,106.65625 c -54.285714,37.14286 -54.285714,174.28571 0,260 100,51.42857 434.29464,34.28571 511.4375,0 31.42857,-31.42857 25.71429,-217.14286 0,-260 -31.42857,-34.285714 -460.00893,-42.857143 -511.4375,0 z M 611.4375,232.375 c -1.10965,39.4333 -70.01443,99.97768 -150,71.40625 -78.01486,-27.86748 -164.28571,16.61409 -150,-71.40625 6.31987,-38.93939 67.15729,-71.4375 150,-71.4375 75.65298,0.52477 151.5294,17.08767 150,71.4375 z"
   id="rect3774"
   inkscape:connector-curvature="0"
   sodipodi:nodetypes="cccccssccs" />

当前路径有一个m = moveto和c = curveto由z = closepath完成的点。接下来M,C和Z在图中切出一个洞。

如何使用iTextSharp以PDF格式绘制它?如何通过ContentByte.Fill();?

从现有路径中剪切一些内部路径以填充它

1 个答案:

答案 0 :(得分:1)

请查看我书中figure 14.2第一行的星形。

使用Fill()方法填充第一个形状。此方法使用非零绕组编号规则来确定是否应填充形状。阅读您的问题,我假设您要使用奇偶规则,在这种情况下,您需要使用EoFill()方法而不是Fill()方法。