iText-无边框的圆形矩形

iText-无边框的圆形矩形,itext,border,Itext,Border,有没有可能有一个没有边框的圆形矩形?下面的代码创建圆形矩形和边框大小为0f和1f的矩形。对于roundRectangle,当线宽设置为0f时,仍有可见边框,但对于边框为0f的矩形,情况并非如此 以下是我正在使用的代码: magazine = new Document(PageSize.LETTER,0,0,0,0); pdfw = PdfWriter.getInstance(magazine, new FileOutputStream("out.pdf")); magaz

有没有可能有一个没有边框的圆形矩形?下面的代码创建圆形矩形和边框大小为0f和1f的矩形。对于roundRectangle,当线宽设置为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();

在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()

现在,您将只填充圆角矩形,而不绘制其边框

mkl的评论:

线宽为0表示可以以设备分辨率渲染的最细线条:1设备像素宽

这是正确的。一种常见的误解是,将线条宽度更改为0意味着调用
stroke()
时不会绘制线条。如果你不想看到一条线,解决方法很简单:不要划它。

对于边框为0f的矩形来说,这是错误的,因为线宽为0表示可以以设备分辨率渲染的最细的线:1设备像素宽,参见规范。
canvas.fill();