是否可以使用没有边框的roundRectangle?以下代码创建边框大小为0f和1f的roundRectangles和Rectangle。对于roundRectangle,当lineWidth设置为0f时仍然存在可见边框,但对于边框为0f的矩形,情况并非如此。
以下是我正在使用的代码:
magazine = new Document(PageSize.LETTER,0,0,0,0);
pdfw = PdfWriter.getInstance(magazine, new FileOutputStream("out.pdf"));
magazine.open();
canvas = pdfw.getDirectContent();
canvas.rectangle(0,0,600,750);
canvas.setColorFill(BaseColor.ORANGE);
canvas.fillStroke();
canvas.setColorStroke(BaseColor.BLACK);
canvas.setColorFill(BaseColor.GRAY);
canvas.setLineWidth(1f);
llx = 100;
lly = 100;
wid = 100;
hei = 100;
canvas.roundRectangle(llx,lly, wid, hei, 10);
canvas.fillStroke();
llx = 100;
lly = 210;
wid = 100;
hei = 100;
canvas.rectangle(llx,lly, wid, hei);
canvas.fillStroke();
canvas.setColorStroke(BaseColor.BLACK);
canvas.setColorFill(BaseColor.WHITE);
canvas.setLineWidth(0f);
llx = 210;
lly = 100;
wid = 100;
hei = 100;
canvas.roundRectangle(llx,lly, wid, hei, 10);
canvas.fillStroke();
llx = 210;
lly = 210;
wid = 100;
hei = 100;
canvas.rectangle(llx,lly, wid, hei );
canvas.fillStroke();
答案 0 :(得分:1)
在PDF中绘制线条和形状时,使用路径构造运算符。以下方法引入了re
(矩形)运算符来构造矩形。
canvas.rectangle(0,0,600,750);
iText还提供便捷方法。例如:以下方法引入了一系列m
(移至),l
(行至),c
(曲线至),...运算符:
canvas.roundRectangle(llx,lly, wid, hei, 10);
只要构建了路径,就可以使用路径绘制操作符来实际绘制内容。 iText有不同的fill()
,stroke()
和fillStroke()
版本。
您正在使用此方法:
canvas.fillStroke();
这意味着您使用填充颜色填充路径并使用笔触颜色描边路径。在你的问题中,你表明你只想填充路径(你想要为圆角矩形内的颜色着色);你不想抚摸它(你不想画圆角矩形的边框)。
这很容易实现。只需将fillStroke()
替换为fill()
:
canvas.fill();
现在,您只会填充圆角矩形而不会描边。
mkl的评论:
线宽为0表示可以在器件分辨率下渲染的最细线:1个器件像素宽。
这是对的。将行的宽度更改为0意味着在调用stroke()
时不会绘制该行,这是一种常见的误解。如果你不想看到一条线,解决方案很简单:不要划线。