gpt4 book ai didi

c# - 在线中间绘制字符串

转载 作者:行者123 更新时间:2023-11-30 16:44:18 24 4
gpt4 key购买 nike

我需要在使用 Graphics.DrawLine 绘制的直线中间绘制一些文本(数字),如下所示:

1和2是按钮。我通过使用提供的答案实现了这一点 here .这个解决方案的问题是它没有考虑到线的起点可以垂直低于终点的事实(在这种情况下,文本与线重叠并且在某个点消失,如下所示: .

我知道如何解决这里关于起点垂直较低的主要问题,但我怎样才能让它不与线重叠,如下图所示? enter image description here

最佳答案

根据评论更新。

我相信你正在寻找类似下面的东西(请注意我使用了测试数据,需要做一些工作。这需要你的 2 个点,创建一个中位数,测量你的字符串,偏移中位数,并绘制字符串.

 private void Form1_Paint(object sender, PaintEventArgs e)
{
var pt1 = new Point(25, 25);
var pt2 = new Point(100, 10);
var ptMed = new Point((pt1.X + pt2.X) / 2, (pt1.Y + pt2.Y) / 2);
var g = e.Graphics;
var lbl = "1";
var offset = g.MeasureString(lbl, this.Font);
ptMed.Y -= (int)offset.Height;
ptMed.X -= (int)offset.Width;
var p = new Pen(Brushes.White);
g.DrawLine(p, pt1, pt2);
g.DrawString(lbl, this.Font, Brushes.White, ptMed);
}

enter image description here

关于c# - 在线中间绘制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43761208/

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