1 回答

TA貢獻2016條經驗 獲得超9個贊
我對這個問題的理解:目標是為段落的每一行添加隨機邊距,以便在使用類似手寫的字體時,它看起來仍然像手動編寫的文本。也應該使用連字符,因此是嘗試將文本分成段落的原始方法。
不過,解決方案可以更簡單。我們可以將即將繪制的段落的線條在繪制之前稍微移動一下。將保留包括連字符在內的所有功能。
可以通過以下方式使用自定義渲染器完成:
private static class CustomParagraphRenderer extends ParagraphRenderer {
public CustomParagraphRenderer(Paragraph modelElement) {
super(modelElement);
}
@Override
public void drawChildren(DrawContext drawContext) {
Random r = new Random();
if (lines != null) {
for (LineRenderer line : lines) {
int leftMargin = r.nextInt(10);
line.move(leftMargin, 0);
line.draw(drawContext);
}
}
}
@Override
public IRenderer getNextRenderer() {
return new CustomParagraphRenderer((Paragraph) modelElement);
}
}
將其應用于段落很容易:
Paragraph paragraph = new Paragraph(longStr);
paragraph.setHyphenation(new HyphenationConfig("en", "US", 2, 2));
paragraph.setNextRenderer(new CustomParagraphRenderer(paragraph));
我得到的結果是這樣的:
添加回答
舉報