【发布时间】:2013-12-19 23:23:59
【问题描述】:
我有一个自定义控件,它由一个面板和一个较小的图片框组成。当我在pictureBox中从Left,Top to Right,Bottom画线时,起点不是从pictureBox的角开始,而是偏移+x和+y。如果我扩展图片框以占据面板的整个大小,它会正确排列。怎么回事?
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();
}
【问题讨论】:
-
当您还可以使用面板的 Paint 事件时,为什么要使用 extra 控件提出了一个问题。除了仅在面板中具有非零位置偏移的控件之外,PictureBox 还更改 e.Graphics 对象以实现 SizeMode 属性。肯定是这里的 Location 属性。使用 PictureBox 是一种将 DoubleBuffered 属性设置为 true 的真正昂贵的方法。
-
由于我在父区域(及其他区域)内绘图,因此我正在使用其他控件并认为 OnPaint() 会更新它们...第一次为我编写绘图代码...谢谢。
标签: c# winforms graphics picturebox