我有一个自定义控件,它由一个面板和一个较小的图片框组成。当我在pictureBox中从Left,Top to Right,Bottom画线时,起点不是从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()
,因为这会导致它递归调用自身。此外,base.OnPaint(e)
看起来不合适,因为您没有覆盖 paint 方法。
关于c# - 画线 : Top and Left are incorrect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20693658/