我有一个自定义控件,其中包含一个面板和一个较小的pictureBox。当我在PictureBox中从左,上到右,从底部画线时,起点不是从PictureBox的角开始,而是偏移+ x和+ y。如果我将pictureBox展开以占据面板的整个尺寸,则它的排列正确。这是怎么回事?

pictureBox固定在顶部,底部,左侧和右侧。没有停靠。

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()应该被删除,因为这将导致它递归调用自己。另外,由于您没有覆盖paint方法,因此base.OnPaint(e)看起来不合适。

08-28 07:05