问题标签 [textrenderer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
573 浏览

c# - 如何使用 TextRenderer 正确测量字符串中的字符?

我正在尝试绘制多色字符串。

由于没有执行此操作的默认方法,因此我尝试使用 TextRenderer.DrawText 自己绘制字符串 char,但是,当我尝试测量字符串时,它不会正确报告第一个字符的宽度。

为了逐个字符地绘制它,我遍历测量前一个字符宽度的字符串以找到下一个要绘制的字符的位置。

为了获得宽度,我使用:

哪个正常工作,但对于第一个字符,它会生成如下输出:

基本上,如果只有一个字符 - 尽管我的标志,它会用填充来测量它。

我可以用:

测量第一个字符并获得正确的宽度值,但是当应该有更好的方法可用时,感觉就像我在做一些黑客行为。

我也可以在上面的方法中使用字符串来避免使用 TextRenderer.MeasureText 并且在没有第一个字符问题的情况下仍然可以获得正确的结果。

在我的情况下,测量字符的正确方法是什么?

0 投票
0 回答
131 浏览

java - TextRenderer draw() 方法的 NoSuchMethodError

我有一个简单的自定义画布

我有一个简单的 JFrame 来显示这个画布。

当我运行这个程序时,有以下异常:

TextRenderer 中的问题(在 Canvas display() 方法中)。

没有这个代码没问题:我看到白色背景上的黑色三角形。但我需要在 GLCanvas 上添加一些文本。

0 投票
1 回答
87 浏览

android - Android Wear TextRenderer 不填充边界

在制作表盘应用程序时,我正在尝试 Android 磨损支持库中相当新的 TextRenderer。

在 onDraw 方法中,我调用 setText,然后调用 draw 并从父 onDraw 方法 (280x280) 传入边界。

不幸的是,打印出来的文本很小,很难找到例子。 在此处输入图像描述

我已经阅读了参考页面,但我没有找到解决方案。

https://developer.android.com/reference/android/support/wearable/complications/rendering/TextRenderer.html

0 投票
0 回答
306 浏览

winforms - 使用 Graphics.TextRenderingHint 和 TextRenderer.DrawText 在 ToolStripItem 中获取抗锯齿文本

我需要增强一个旧版 WinForms 应用程序以支持应用程序表单中 TextRenderingHint 设置的继承。

为简单起见,假设我们有一个带有System.Drawing.Text.TextRenderingHint类型的 TextRenderingHint 属性的主窗体。此属性指定主窗体中的文本质量,并且必须在从此主窗体调用的对话框窗体中继承。主窗体中的文本是使用Graphics.DrawString方法绘制的,支持主窗体的TextRenderingHint属性的各种设置是没有问题的(其实就是在用Graphics.DrawString绘制文本之前简单的赋值给Graphics.TextRenderingHint)

问题是其中一个对话框的界面基于 WinForms ToolStrip 组件,我需要在其项目中重新定义文本绘制以支持主窗体的 TextRenderingHint 设置。

在网上搜索并分析了反射器应用程序中ToolStripRenderer类的源代码后,我得出的结论是,实现我需要的最佳方法是使用自定义 ToolStrip 渲染器和重新定义的OnRenderItemText方法。

我在 ToolStripRenderer 类的 OnRenderItemText 方法的默认实现中找到了以下代码(请参阅我的问题底部的完整代码):

,这给了我一个想法,我可以尝试在从 ToolStripRenderer 派生的类中通过 OnRenderItemText 的这个简单实现来解决我的问题:

我的想法是基于这样一个事实,即如果我们不在 ToolStrip 项目中使用垂直文本(我们没有),基本的 OnRenderItemText 方法“只是”调用TextRenderer.DrawText并且理论上我的想法可以工作。不幸的是,实际上这仅适用于 TextRenderingHint.ClearTypeGridFit 选项 - 至少在我的开发电脑上。

我现在看到的唯一可行的想法是完全重写 OnRenderItemText 并在里面使用 Graphics.DrawString。我对吗?我的问题还有其他解决方案吗?

更新 #1。我在尝试基于 Graphics.DrawString 重新实现 OnRenderItemText 时遇到了问题。看来,不可能将传递给 TextRenderer.DrawText(TextFormatFlags枚举)的文本格式标志转换为StringFormatClass参数 Graphics.DrawString 期望的......

更新#2。ToolStripRenderer 类中 OnRenderItemText 方法的默认实现如下:

在此处输入图像描述

0 投票
1 回答
1629 浏览

winforms - 如何在Winforms中以像素为单位测量字符串的确切宽度

我需要在 Winforms 的标签控件中测量字符串的确切像素大小。我尝试使用 TextRenderer.MeasureText(Text, Font) 和 graphics.MeasureString(Text, Font) 但没有得到准确的像素宽度。

检查确切的像素宽度时,它是 90,但 TextRenderer 和 Graphics 给出不同的值。谁可以帮我这个事。

在此处输入图像描述

0 投票
2 回答
1501 浏览

vb.net - 如何在 vb.net 中使用 TextRenderer DrawText 换行长字

如何在 vb.net 中使用 TextRenderer DrawText() 在带有断字的表单上绘制长单词?我认为这是一个简单的问题,我尝试了所有 TextFormatFlags 组合,但找不到任何解决方案。任何人都可以帮忙吗?这是一个示例:

我需要这个(没有剪辑):

错误的解决方案:

谢谢您的帮助!

0 投票
0 回答
450 浏览

.net - Application.SetCompatibleTextRenderingDefault(false) 在 WinForms 应用程序中有意义吗?

当我们在 VS.NET 中创建一个新的 WinForms 应用程序项目时,应用程序的主要过程使用以下模板代码:

如果我们放置在表单上的所有 WinForms 控件(如 Label 和 Button)都默认设置为属性,那么调用Application.SetCompatibleTextRenderingDefault并将其defaultValue参数设置为的目的是什么?falseUseCompatibleTextRenderingfalse

0 投票
0 回答
64 浏览

c# - TextRenderer 文本在左上角打印非常小

我想打印多行文本。
搜索了一下,发现可以用TextRenderer打印出来,但是文字在纸的左上角打印的非常小。我不知道为什么。

代码:

我找不到问题。