c# - 画线 : Top and Left are incorrect

标签 c# winforms graphics picturebox

我有一个自定义控件,它由一个面板和一个较小的图片框组成。当我在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/

相关文章:

c# - Entity Framework - 具有多对多表的用户和组

c# - 如何在 C# 中通过 TCP 连接发送整数数组

c# - 如何从 StreamGeometry 中提取 Point 对象?

c# - 按钮 anchor 的重新定位不如组中的其他控件快

c# - 将项目添加到任务栏应用程序菜单

c# - 如何删除表格上画的线?

algorithm - 如何在24 bpp显示器上最好地显示30+ bpp图形?

c# - 如何使用 TestScheduler 完成超时行为?

c# - .NET 应用程序中 'reset' 所有静态变量的最佳方法

c# - 我没有 SqlServerCe 程序集?