我想canvas
使用指定宽度绘制文本.drawtext
例如,400px
无论输入文本是什么,文本的宽度都应始终为。
如果输入文本较长,则将减小字体大小;如果输入文本较短,则将相应地增大字体大小。
这是一种更有效的方法:
/**
* Sets the text size for a Paint object so a given string of text will be a
* given width.
*
* @param paint
* the Paint to set the text size for
* @param desiredWidth
* the desired width
* @param text
* the text that should be that width
*/
private static void setTextSizeForWidth(Paint paint, float desiredWidth,
String text) {
// Pick a reasonably large value for the test. Larger values produce
// more accurate results, but may cause problems with hardware
// acceleration. But there are workarounds for that, too; refer to
// http://stackoverflow.com/questions/6253528/font-size-too-large-to-fit-in-cache
final float testTextSize = 48f;
// Get the bounds of the text, using our testTextSize.
paint.setTextSize(testTextSize);
Rect bounds = new Rect();
paint.getTextBounds(text, 0, text.length(), bounds);
// Calculate the desired size as a proportion of our testTextSize.
float desiredTextSize = testTextSize * desiredWidth / bounds.width();
// Set the paint for that size.
paint.setTextSize(desiredTextSize);
}
然后,您所要做的就是setTextSizeForWidth(paint, 400, str);
(400为问题中的示例宽度)。
为了获得更高的效率,您可以使它Rect
成为静态类成员,从而避免每次实例化它。但是,这可能会引入并发问题,并且可能会阻碍代码的清晰度。
我会保持简短直截了当,这样我就明白了: > vw根据视区宽度更改字体大小。 VH根据视区高度更改字体大小。 我的问题是; 有没有一种方法可以根据视区的宽度和高度来缩放我的字体大小?因此,改变浏览器的高度和宽度将适当地缩放我的字体大小。 我这样问是因为我想根据它们所在的容器适当地缩放我的文本大小,我的问题是容器缩放到100%的宽度和100%的高度。因此,根据高度和宽度来缩放文本大小似乎是合乎逻辑的,
我正在使用iTextSharp创建一个新的pdf文件。pdf将包含一个标题和一个pdf表格。生成的pdf文件的文件大小应该尽可能小,所以我使用默认字体(Helvetica,12pt)。有没有办法将默认字体大小从12pt更改为8pt。 我知道我可以为每个pdf表格单元格设置字体。 但是是否可以为整个文档/表格设置默认字体大小,这样我就不需要为每个表格单元格额外设置字体了? (我在谷歌上搜索了这个话题
我用的是木星笔记本。我有一个相当宽的屏幕,但是显示的输出(例如,当我打印一个数组时)被格式化,就像屏幕很窄一样。 我找到了一种增加细胞宽度的方法 但这似乎只影响输入,而不影响输出(参见屏幕截图): 我已尝试在
问题内容: 我的元素: 风格: 脚本,使其保持方形: 问题是要在纯CSS中做同样的事情。没有脚本。 问题答案: 我知道有两种技术可以根据元素的高度保持元素的长宽比: 当 高度相对于视口时 : 您可以使用vh单位: 对于 基于父元素的高度的高度 : 您可以使用具有所需纵横比的虚拟图像。宽高比为1:1的示例可以使用1 * 1透明.png图像,也可以使用@vlgalik注释为1 * 1 base64编码
我需要制作某种表格,在其中存储简单的区域节点(之后我会在上面做其他事情——比如水平移动单元格并给它们其他属性,例如标签)表格将有很多列, 这是我生成该表的部分代码。 这是我在屏幕上得到的输出。正如你所观察到的,一些网格是紧粒度的,而另一些网格则是紧粒度的 你知道为什么它是错误的,以及如何修复它吗? 附言:这是我在这里的第一个帖子,我希望我做的一切都是对的;)
如何在JavaFX中设置的宽度? 我试过这个: 但我看不到任何变化。