问题标签 [drawstring]
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.
pdf - PdfSharp:文本高度/定位问题
无论我是否使用 XTextFormatter,我都会收到同样的错误,即 LayoutRectangle 的高度必须为 0 或类似的东西。
fontStyle的类型为 System.Drawing.FontStyle foreColour的类型为 System.Drawing.Color 我已经从 PdfPage 中预定义了_gfx ,其中Orientation = Landscape,Size = Letter xPos和yPos是 double 类型的参数,与xLimit和yLimit相同。
我收到 LayoutRectangle 的高度必须为零 (0) 的运行时错误...
根据定义,矩形意味着有一个高度,否则称它为一条线!没看懂!...
我直接尝试了XGraphics.DrawString()方法,我得到了同样的错误。看来我不能使用 LayoutRectangle 但必须手动管理文本适合所需区域。
虽然 yPos 变量值是完全相同的值!
*yPos = Page.Height * .4093,页面高度的 40.93%。*
以下是我尝试做的一个例子:
“你好世界!” “你好世界!”
这就是我得到的:
“你好世界!”
而且由于不同的打印区域限制和字体大小以及不同的字体样式,我不能只将这些写成一个简单的句子,包括正确的空格数。
c++ - 将图像绘制到透明位图时字符周围的黑色边框
我必须首先在透明位图上绘制一个字符串,然后将 A 绘制到目标画布。但是在某些情况下,字符周围有黑色边框。
desGr 上的字符绘制有一些字体大小的黑板。
我怎样才能避免这个问题?非常感谢!
java - 如何在 Java 中使用 drawString 编写行和列
我得到的只是一个 35x30 的黄色正方形(程序另一部分中的 row 和 col 变量)。我根本看不到任何“X”。我试图将它隔开,以防它与 col+10, row+10 混合在一起,但这并不影响它。我以相同的效果切换了 col 和 row。
谢谢你。
.net - 带有受控自动换行的图形拉绳
基本上我的问题是我需要在需要时自动换行字符串。不是当 .NET 想要的时候。我知道如果我给它一个矩形来绘制 DrawString 方法,它将自动换行。我需要控制它何时自动换行。因此,假设我要绘制的字符串是测试 1234。每当看到空格时,我都想在新行上绘制文本。所以在这种情况下,它将有两行 - 测试和 1234。我猜我需要重新调整字符串大小(以适应我的界限)和多个拉绳方法调用的组合来绘制每条线。问题是我真的不知道该怎么做。我是 GDI+ 的新手。
.net - 在 .NET DrawString 中换行时禁用断字
我正在使用 .NET 将字符串绘制到有限的空间中。我希望字符串尽可能大。我将字符串分成更多行(如果它留在矩形内)没有问题。现在的问题是:我不希望 .NET 在单词中间将字符串分成不同的行。例如,字符串“Test”以大字体打印在单行上。字符串“Testing”应该以较小的字体打印在单行上(而不是“Testi”在一行上,“ng”在另一行上),字符串“Test Test”应该以相当大的字体打印在两行上。
有人知道如何限制 .NET 不破坏我的话吗?
我目前正在使用这样的代码:
java - Java Graphics2D 拉绳
大家好,我这里有个小问题。我有一个面板,我正在画一个字符串。这是一个游戏,所以我一直在重新绘制分数以更新它。然而,当我再次绘制它时,它被绘制在之前的分数之上,所以它看起来都是乱码。任何想法如何解决这一问题?
comp2d.drawString(GetScore(Score),ScoreX,ScoreY);
gdi+ - Graphics.MeasureCharacterRanges 给出错误的尺寸计算
我正在尝试将一些文本呈现到 Web 窗体应用程序中图像的特定部分。文本将由用户输入,所以我想改变字体大小以确保它适合边界框。
我的代码在我的概念验证实现中做得很好,但我现在正在尝试对设计器的资产进行测试,这些资产更大,我得到了一些奇怪的结果。
我正在运行大小计算,如下所示:
然后,我使用以下行将文本渲染到我从文件系统中提取的图像上:
在哪里:
__fonts
是一个PrivateFontCollection
,PrivateFontCollection.GetFontBySize
是一个扩展方法,它返回一个FontFamily
RectangleF __textBoundingBox = new RectangleF(150, 110, 212, 64);
int __minimumSize = 8;
int __startingSize = 48;
Brush __brush = Brushes.White;
int size
从 48 开始并在该循环内递减Graphics g
有SmoothingMode.AntiAlias
并TextRenderingHint.AntiAlias
设置context
是 a (这是 an方法的System.Web.HttpContext
摘录)ProcessRequest
IHttpHandler
其他方法是:
现在我有两个问题。
首先,文本有时会坚持通过在单词中插入换行符来换行,而此时它不适合并导致 while 循环再次递减。我不明白为什么Graphics.MeasureCharacterRanges
当它不应该在一个单词中自动换行时,它会认为它适合盒子。无论使用何种字符集(我用拉丁字母单词以及 Unicode 范围的其他部分,如西里尔文、希腊文、格鲁吉亚文和亚美尼亚文),都会表现出这种行为。我应该使用一些设置来强制Graphics.MeasureCharacterRanges
只在空白字符(或连字符)处换行吗?第一个问题与2499067 后相同。
其次,在放大到新的图像和字体大小时,Graphics.MeasureCharacterRanges
给了我很大的高度。我在其中RectangleF
绘制对应于图像的视觉明显区域,因此我可以很容易地看到文本何时减少超过必要。然而,当我给它传递一些文本时,这个GetBounds
电话给我的高度几乎是它实际占用的两倍。
使用反复试验设置__minimumSize
强制退出 while 循环,我可以看到 24pt 文本适合边界框,但Graphics.MeasureCharacterRanges
报告该文本的高度,一旦渲染到图像,是 122px(当边界盒子高 64 像素,适合该盒子)。事实上,在不强制的情况下,while 循环迭代到 18pt,此时Graphics.MeasureCharacterRanges
返回一个合适的值。
跟踪日志摘录如下:
将字体大小减小到 24,因为大小为 193×122,限制为 212 ×
64
是 212×64
将字体大小递减为 21,大小为 192×71,限制为 212×64
字体大小递减为 20,大小为 198×68,限制为 212×64
字体大小递减为 19,大小为 185 ×65,限制为 212×64
将 HESSELINK 的 VENNEGOOR 写入 DIN-Black 中 18pt,尺寸为 178×61,限制为 212×64
那么为什么Graphics.MeasureCharacterRanges
给我一个错误的结果呢?我可以理解它是,例如,如果循环在 21pt 附近停止时字体的行高(如果我截取结果并在 Paint.Net 中测量它,这在视觉上很合适),但它比它应该做的要远得多因为,坦率地说,它返回了错误的结果。
.net - 根据文本调整矩形大小
我正在使用 Rectangle 来显示一些数据的自定义控件。现在,假设矩形的宽度和高度设置为 100。
如果我的数据量较少,那很好,我可以使用 DrawString 方法进行绘制。但是,有时数据更大,因此会被剪裁。
我曾尝试使用 MeasureString 方法,但它没有检索到正确的值。如果必须以 100px 宽度的矩形显示,有什么方法可以看到字符串的大小,[长度和高度]。我的意思是可以增加高度但不能增加宽度,以便我可以使用字符串的正确高度使其完整显示在该矩形中。
java - 使用 Java 打印到收据打印机时修复文本拉伸
我通过实现 Java Printable 并将我的代码放入 print 方法来打印到一些 Epson 收据打印机。要将文本绘制到打印机,我使用 Graphics2D.drawString。我还在打印机上绘制一个矩形,以查看在打印到其他打印机时如何与文本大小进行比较。当打印到收据打印机时,纸上的文本大约是打印到激光打印机或 XPS writer 虚拟打印宽度的两倍。这是 Java 将文本绘制到 Graphics2D 对象的方式的问题吗?我安装了最新版本的 Java 6 update 20。
任何关于调查内容的想法都会有所帮助。
谢谢。
这是我正在使用的代码。在这个例子中,当我将它发送到 XPS 写入器时,我在矩形的右边缘看到字母“c”,如果我将它打印到我的收据打印机,则 6 在矩形的右边缘,你可以告诉文本比它应该宽得多。矩形似乎是正确的大小。
我尝试更改页面和边距大小,但似乎无法解决我的文本问题。我从 Microsoft Word 如何自动检测打印机中获得了这些纸张尺寸和边距。Word 将文本正确打印到收据打印机。
c# - 带字符换行的 DrawString
我正在使用 C# 为 Windows Mobile 应用程序创建一个致命错误对话框。问题是当我尝试使用 绘制堆栈跟踪时DrawString
,我的堆栈跟踪的一半被剪掉,因为DrawString
使用自动换行而不是字符换行。
对于那些不明白解释的人:
当我绘制堆栈跟踪时,结果如下:
我希望它像这样打印:
这在 Csharp 中可能吗?
重现问题:
创建一个新的智能设备项目。(设备应用)
将 Form1 代码替换为以下内容:
}
运行项目。