gpt4 book ai didi

C# 图形、绘画、图片框居中

转载 作者:太空宇宙 更新时间:2023-11-03 19:23:28 32 4
gpt4 key购买 nike

好的,这就是问题所在:在 C# 表单中,我创建了一个新的私有(private) void:

private void NewBtn(string Name, int x, int y)

它的目的是创建一个模仿按钮行为的图片框(不要问为什么,我只是喜欢使事情复杂化)并且可以根据需要多次调用。

Font btnFont = new Font("Tahoma", 16);
PictureBox S = new PictureBox();
S.Location = new System.Drawing.Point(x, y);
S.Paint += new PaintEventHandler((sender, e) =>
{
e.Graphics.TextRenderingHint =
System.Drawing.Text.TextRenderingHint.AntiAlias;
e.Graphics.DrawString(Name, btnFont, Brushes.Black, 0, 0);
});
Controls.Add(S);

现在,我担心 Paint/Graphics 部分(忽略其余代码,我只给出了其中的一部分)。当我称它为“NewBtn(Name, x, y)”时,我想将我写为“Name”的文本居中。那么,我应该把什么放在

e.Graphics.DrawString(Name, btnFont, Brushes.Black, ThisX???, 0);

建议?

最佳答案

var size = g.MeasureString(Name, btnFont);

e.Graphics.DrawString(Name, btnFont, Brushes.Black,
(S.Width - size.Width) / 2,
(S.Height - size.Height) / 2));

考虑到特定 Button/PictureBox 的字体和文本不会更改,您可以通过仅测量一次字符串来改进这一点。

我还建议检查 S.Size 是否比 size 宽/高并处理它,这样图形就不会尝试绘制以负数开头的字符串坐标。

关于C# 图形、绘画、图片框居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10460124/

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