相关疑难解决方法(0)

如何在Java中居中显示Graphics.drawString()?

我目前正在为我的菜单系统上的Java游戏,我不知道如何可以从中心的文本Graphics.drawString(),因此,如果我想画一个文本,其中心点是在X: 50Y: 50,和文字30像素宽,10像素高,文本将从X: 35和开始Y: 45.

在绘制文本之前,我可以确定文本的宽度吗?
然后这将很容易数学.

编辑:我也想知道我是否可以获得文本的高度,这样我也可以垂直居中.

任何帮助表示赞赏!

java text draw graphics2d centering

30
推荐指数
2
解决办法
4万
查看次数

如何计算字体的宽度?

我使用java绘制一些文本,但我很难计算字符串的宽度.例如:zheng中国......这个字符串会占用多长时间?

java string width

11
推荐指数
2
解决办法
4万
查看次数

如何确定图形字符串的长度?

我正在创建一个excel文档的图形时间轴,我需要在该事件的标记旁边有一个小事件名称标签.其中一些很容易,并且是正确的,但其他一些是合理的,我需要弄清楚它们的宽度,以便我可以正确地抵消它们.

window.drawString("7/4-Fourth of July",horizontalIndex-Offset,verticalIndex);
Run Code Online (Sandbox Code Playgroud)

目前我使用平均值为10和32的平均值来平均像素宽度,但这并没有真正削减它.有人可以帮助我获得确切的偏移吗?在此输入图像描述

java graphics swing font-size

9
推荐指数
1
解决办法
7092
查看次数

使用可变宽度字体创建文本列

我正在尝试为将在MSN Messenger上运行的C#应用​​程序创建文本颜色.我正在排队等待所有事情.

这是我想要的输出示例:

1)  Pizza Hut                                            123 Fake St.
2)  Domino's Pizza                                       123 Fake St.
3)  The Cheesecake Cafe                                  123 Fake St.
4)  Capital Pizza & Steakhouse                           123 Fake St.
5)  Funky Pickle Pizza                                   123 Fake St.
6)  Boston Pizza                                         123 Fake St.
7)  Rose Bowl Rouge Lounge                               123 Fake St.
8)  Royal Pizza                                          123 Fake St.
9)  A Columbus Pizza & Donair Inc                        123 Fake St.
Run Code Online (Sandbox Code Playgroud)

但因为它是一个可变宽度的字体,它显示如下:

1)  Pizza Hut                                        123 Fake St.
2)  Domino's Pizza                                   123 Fake St. …
Run Code Online (Sandbox Code Playgroud)

c# text-formatting windows-live-messenger

6
推荐指数
1
解决办法
3500
查看次数

Kotlin/Java - 如何识别全角字符?

特尔;博士:

半角:常规宽度字符。
例如。'A' 和 '?'

全角:在显示器上占用两个等宽英文字符空间的字符
。'?', '?' 和 '?'

我需要这个函数的实现:

/**
 * @return Is this character a full-width character or not.
 */
fun Char.isFullWidth(): Boolean
{
    // What is the most efficient implementation here?
}
Run Code Online (Sandbox Code Playgroud)

不,这与这些字符的数据结构无关,而仅与显示的宽度有关。


很长的故事:

我正在重构 HyLogger,这是一个专注于文本着色渐变的日志库。这是我遇到的问题:

HyLogger 梯度问题

如果您查看屏幕截图中打印的第一个渐变文本块,中间的全角文本将其后的渐变图案弄乱了,因为在调用 时string.length,即使它们占据两倍大小,它们也被视为一个字符。

您可能会问,为什么会有人打印全角字符?这是一个真正的问题,因为中文、日文或韩文等语言中的几乎所有字符都是全角字符,因此占用的空间是英文全角字符的两倍。

所以我需要一种方法来识别全角字符,以便我可以将它们计算为两个渐变像素而不是一个来解决图片中的问题。


已知信息:

C++ 检查 unicode 字符是否为全角

  1. Unicode 网站(以及报告)上有一个东亚宽度字符列表,但在呈现渐变文本块时遍历每个字符的整个列表可能效率不高。

  2. Python 有这个Unicode 数据库库,一种可能的解决方案是使用 Jython 调用 python API,这会很重,而且效率可能不是很好。

分析 Java 中的全角或半角字符

  1. ICU4J库具有统一的工具来实现这一功能,但该库为12.5 MB大,这是不是最佳的我50 KB记录库。

java unicode character string-length kotlin

6
推荐指数
1
解决办法
309
查看次数

如何计算字符串的宽度(以像素为单位)?

如何计算StringJava中像素的宽度?例如,我有一个字符串说"Hello World!".它的长度(以像素为单位),还考虑其字体系列和大小?

java string fonts width

5
推荐指数
2
解决办法
6867
查看次数

Java:使用unicode overline显示平方根时的字符串长度?

在Java中我创建了一个使用unicode和overline的字符串,因为我试图显示数字的平方根.我需要知道一些格式问题的字符串长度.在unicode中使用组合字符时,查找字符串长度的常用方法似乎失败,如下例所示.任何人都可以帮我找到随机数在平方根中的第二个字符串的长度,或者如何更好地进行平方根显示的提示?

    String s = "\u221A"+"12";
    String t = "\u221A"+"1"+"\u0305"+"2"+"\u0305";
    System.out.println(s);
    System.out.println(t);
    System.out.println(s.length());
    System.out.println(t.length());
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助,我在谷歌上找不到任何相关内容.

java unicode

3
推荐指数
1
解决办法
1906
查看次数

如何从JAVA中的FontMetrics获取正确的String宽度

我通过使用对象stringWidth("str")上的方法来计算字符串的宽度FontMetrics.此方法仅给出基线上从起点到终点的宽度.不是字符串的总宽度.

有关如何计算总宽度的任何想法?

大多数文档说我不能通过在字符串中添加每个字符的宽度来依赖结果.这是我的代码,直到现在:

BufferedImage image = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = image.createGraphics();
FontMetrics fm = g.getFontMetrics(new Font("Arial", Font.PLAIN, 6));
int width = fm.stringWidth("Product name");
Run Code Online (Sandbox Code Playgroud)

java string

2
推荐指数
2
解决办法
1万
查看次数