gpt4 book ai didi

C# Graphics.DrawString RectangleF 自动高度 : How to find that height?

转载 作者:太空狗 更新时间:2023-10-29 21:14:26 24 4
gpt4 key购买 nike

我正在使用 Graphics DrawString 方法在图像上书写文本,将我的文本与 RectangleF 绑定(bind)。这是我的代码:

//Write header2
RectangleF header2Rect = new RectangleF();
header2Rect.Width = 600;
header2Rect.Location = new Point(30, 105);
graphicImage.DrawString(header2, new Font("Gotham Medium", 28, FontStyle.Bold),brush, header2Rect);
//Write Description
RectangleF descrRect = new RectangleF();
descrRect.Width = 600;
int measurement = ((int)graphicImage.MeasureString(header2, new Font("Gotham Medium", 28, FontStyle.Bold)).Height);
var yindex = int.Parse(105 + header2Rect.Height.ToString());
descrRect.Location = new Point(30, 105+measurement);
graphicImage.DrawString(description.ToLower(), new Font("Gotham", 24, FontStyle.Italic), SystemBrushes.WindowText, descrRect);

这适用于某些情况(即当 header2 只有 1 行长时),但我的 measurement 变量只测量字体的高度,而不是整个 DrawString 矩形。我不想设置静态 header2Rect 高度,因为高度会根据该文本而变化。

yindex 不起作用,因为 header2Rect.Height = 0。有没有办法查看我的 header2 有多少行?

我是否只需要执行 MeasureString 宽度并将其除以我的边界矩形宽度,然后乘以 MeasureString 高度?我假设有更好的方法。

谢谢

[编辑] 看起来高度实际上是 0 但文本只是溢出到外面,但宽度仍然限制了文本换行。我只是做了一些数学计算来找到高度,但我希望有更好的方法。

最佳答案

你永远不会设置你的矩形高度:

private void panel1_Paint(object sender, PaintEventArgs e)
{
string header2 = "This is a much, much longer Header";
string description = "This is a description of the header.";

RectangleF header2Rect = new RectangleF();
using (Font useFont = new Font("Gotham Medium", 28, FontStyle.Bold))
{
header2Rect.Location = new Point(30, 105);
header2Rect.Size = new Size(600, ((int)e.Graphics.MeasureString(header2, useFont, 600, StringFormat.GenericTypographic).Height));
e.Graphics.DrawString(header2, useFont, Brushes.Black, header2Rect);
}

RectangleF descrRect = new RectangleF();
using (Font useFont = new Font("Gotham Medium", 28, FontStyle.Italic))
{
descrRect.Location = new Point(30, (int)header2Rect.Bottom);
descrRect.Size = new Size(600, ((int)e.Graphics.MeasureString(description, useFont, 600, StringFormat.GenericTypographic).Height));
e.Graphics.DrawString(description.ToLower(), useFont, SystemBrushes.WindowText, descrRect);
}

}

关于C# Graphics.DrawString RectangleF 自动高度 : How to find that height?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6752520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com