绘制线:顶部和左侧不正确



我有一个自定义控件,它由一个面板和一个较小的图片框组成。当我在图片框中从左,上到右,底部绘制线条时,起点不是从图片框的一角开始的,而是偏移+x和+y。如果我展开图片框以占据面板的整个大小,它会正确排列。这是怎么回事?

图片框定位到顶部、底部、左侧和右侧。无对接。

private void pictureBoxPlot_Paint(object sender, PaintEventArgs e)
{
    base.OnPaint(e);
    e.Graphics.DrawLine(Pens.LightGray,
        pictureBoxPlot.Left, pictureBoxPlot.Top,
        pictureBoxPlot.Right, pictureBoxPlot.Bottom);
    pictureBoxPlot.Invalidate();
}

控件有自己的坐标系,从 (0, 0) 开始,因此可以这样绘制:

e.Graphics.DrawLine(Pens.LightGray,
    0, 0, pictureBoxPlot.ClientSize.Width, pictureBoxPlit.ClientSize.Height);

应删除pictureBoxPlot.Invalidate(),因为这会导致它递归调用自身。 此外,base.OnPaint(e)看起来不合适,因为您没有覆盖 paint 方法。

我相信坐标是相对于图片框的。 如果你想要左上角和一整行,请使用如下内容:0, 0, pictureBoxPlot.height, pictureBoxPlot.Width

绘制是相对于画布的。您正在尝试绘制框在窗体上的实际位置。使用PictureBoxPlot.ClientSize

最新更新