kotlin - BufferedImage drawString 损坏的字母
问题描述
我正在用 Kotlin 编写一个在 Raspberry Pi 上运行的程序。我正在使用小型 128x64 像素 OLED 显示屏
要显示文本,我在 BufferedImage 上绘制它,然后显示该图像
val bufferedImage = BufferedImage(128, 64, BufferedImage.TYPE_INT_RGB)
val g = bufferedImage.createGraphics()
g.paint = Color.WHITE
g.font = Font("PixelMix", Font.BOLD, /*Font size*/8)
g.drawString("IP: 192.168.1.12", 0, 24)
g.dispose()
display.drawImage(bufferedImage, 0, 0)
字体链接:https ://www.dafont.com/pixelmix.font
因为屏幕空间非常有限,我使用小字体。
但是问题来了——下面的代码生成的图像中第一个1
缺少垂直线,而最后一个1
是正方形。
当我这样做g.font = Font("PixelMix", Font.PLAIN, 10)
时2
,192
缺少最右边的像素行,与字体大小 12 类似。在字体大小 16P
上缺少垂直线,依此类推。当一切看起来都可以接受时,它只是字体大小为 24,但对于那个大小的屏幕来说,24 太大了。
我现在的问题是如何在 BufferedImage 上绘制一个字符串,这样我就不会得到这样的工件?
编辑:
字体大小为 10 时,正好 8 个像素(垂直)用于显示字符至于字体大小 8,它是垂直 6 个像素,而对于 16,它是 12 个像素
我做了g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF)
,但没有帮助
解决方案
推荐阅读
- tensorflow - 时间序列 LSTM 模型错误预测
- react-native - TypeError:null 不是对象(评估 '_firebase.default.auth().currentUser.displayName')
- sql - 有没有办法在 SQL 中将 2 列数据与 1 列配对?
- php - 从 mysql 表中获取数据并在 sql 查询 (PHP) 中的“IN”中使用它们
- google-app-engine - asia.artifacts.../containers/images 中的 appengine 文件可以安全删除吗?
- excel - VBA将文件夹中所有工作表中的单元格值转换为文本
- android-jetpack-compose - 如何在 Jetpack Compose 中使用 Material TextField Composable 的 readOnly 属性
- java - 注释处理在普通 java 15 中不起作用
- xml - 过滤 xml 元素,使用 groovy xml slurper 删除重复的子节点
- javascript - Discord 机器人是否可以回复我回复的消息?