我有一个自定义控件,其中包含一个面板和一个较小的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)
看起来不合适。