winforms 如何在窗体上绘制十字准线?

vs3odd8k  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(152)

我的目标是实现一个窗体,其中显示一个十字准线,其中心也标记窗体的中心。调整窗体大小时,应调整十字准线,使其继续标记窗体的中心。
为此,我编写了以下代码:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        ResizeRedraw = true;
    }

    private void DrawCrosshair(Graphics g, Size size)
    {
        Pen pen = new Pen(Color.Black)
        {
            Width = 2
        };

        var halfWidth = Convert.ToInt32(size.Width / 2.0);
        var halfHeight = Convert.ToInt32(size.Height / 2.0);

        Point left = new Point(0, halfHeight);
        Point right = new Point(size.Width - 1, halfHeight);
        Point top = new Point(halfWidth, 0);
        Point bottom = new Point(size.Height - 1, halfWidth);

        g.DrawLine(pen, left, right);
        g.DrawLine(pen, top, bottom);
    }

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        DrawCrosshair(e.Graphics, Size);
    }
}

在形状上绘制了线,但它们没有正确放置。特别是,垂直线表现得很奇怪,并且被绘制成部分弯曲:

我是不是算错坐标了?还是有其他的事情干扰了我的绘画?我使用的是.NET Framework 4.7.2。

ubby3x7f

ubby3x7f1#

您不小心交换了底部点上的X,Y:new Point(size.Height - 1, halfWidth);
试试这个:

Point bottom = new Point(halfWidth, size.Height - 1);

相关问题