我使用 codiva 在 Chromebook 上编写代码。我想知道是否可以在控制台输出中创建图形。例如,我的文本现在是普通的(它作为纯文本在控制台中打印)。如果我只能在控制台输出(没有画布、Jframe、弹出窗口等),是否有办法加粗、强调或甚至改变文本的颜色?
我尝试过 "\u001B[1m(粗体文本)",但只得到了这个效果(见输出)。倾斜的效果也是一样的。 输出:
我尝试过 "\u001B[1m(粗体文本)",但只得到了这个效果(见输出)。倾斜的效果也是一样的。 输出:
![](https://istack.dev59.com/9q2nu.webp)
控制序列的解释取决于具体的控制台,而codiva.io的控制台似乎不解释任何控制序列。
然而,由于它显示在浏览器中,浏览器通常具有广泛的Unicode支持,因此您可以使用特殊的代码点来实现有限的格式化。例如:
class HelloCodiva {
public static void main(String[] args) {
System.out.println("Formatted: "
+ bold("bold") + " " + italic("italic") + " " + bold(italic("both")));
}
static CharSequence bold(CharSequence cs) {
return trans(cs, 0x1D400, 0x1D41A);
}
static CharSequence italic(CharSequence cs) {
return trans(cs, 0x1D434, 0x1D44e);
}
static CharSequence trans(CharSequence cs, int upper, int lower) {
return cs.codePoints()
.map(cp -> cp >= 'A' && cp <= 'Z'? cp + upper - 'A':
cp >= 'a' && cp <= 'z'? cp + lower - 'a':
cp >= 0x1D400 && cp <= 0x1D433? cp + 104:
cp >= 0x1D434 && cp <= 0x1D467? cp + 52:
cp)
.collect(StringBuilder::new,
StringBuilder::appendCodePoint, StringBuilder::append);
}
}
打印
Formatted:
java.awt.image.BufferedImage
。BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
//.. draw stuff ..
ImageWriter writer = ImageIO.getImageWritersByFormatName("png").next();
writer.setOutput(ImageIO.createImageOutputStream(new File("myimage.png"));
writer.write(image);