在绘制的WinForms线(Drawing a line in Winforms)

2019-06-24 21:41发布

我无法画一个框组中的一行在简单的Windows窗体。

这里是我的代码:

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();                        
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);            
            DrawLShapeLine(groupBox1.CreateGraphics(), 10, 10, 20, 40);
        }

        public void DrawLShapeLine(System.Drawing.Graphics g, int intMarginLeft, int intMarginTop, int intWidth, int intHeight)
        {
            Pen myPen = new Pen(Color.Black);
            myPen.Width = 2;
            // Create array of points that define lines to draw.
            int marginleft = intMarginLeft;
            int marginTop = intMarginTop;
            int width = intWidth;
            int height = intHeight;
            int arrowSize = 3;
            Point[] points =
             {
                new Point(marginleft, marginTop),
                new Point(marginleft, height + marginTop),
                new Point(marginleft + width, marginTop + height),
                // Arrow
                new Point(marginleft + width - arrowSize, marginTop + height - arrowSize),
                new Point(marginleft + width - arrowSize, marginTop + height + arrowSize),
                new Point(marginleft + width, marginTop + height)
             };

            g.DrawLines(myPen, points);
        }
    }

如果我附上DrawLShapeLine方法按钮单击事件,它绘制精细,但它不会对形式的负载吸取。

请指教。

Answer 1:

挂钩的事件处理程序的Paint中的事件GroupBox ,并调用DrawLShapeLine从事件处理程序,而不是内。 然后,您应该使用Graphics由事件参数提供的对象:

private void groupBox1_Paint(object sender, PaintEventArgs e)
{
    DrawLShapeLine(e.Graphics, 10, 10, 20, 40);
}

当你的代码现在看起来它会尝试在作画GroupBox时,形式要求画。 该组框可以在其他任何场合,这将你画的线消失涂漆。



Answer 2:

快速和肮脏的:

如何为1个像素的宽度创建面板,并给它一个的backgroundColor?



Answer 3:

另一种选择是使用线控制是在Visual Basic电源包可用。

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/d9e082c8-5386-4481-a744-1c9029805696/

如果您的Visual Studio 2008 SP1或Visual Studio 2010中,您不需要下载任何东西。

如果你没有看到在工具箱中的Visual Basic的PowerPack控制,右键单击工具箱,并在上下文菜单中选择全部显示。



Answer 4:

添加一个标签,没有文字,三维边框和2的高度(你必须设置高度在属性页中,不与GUI)!



Answer 5:

我不知道,如果别的东西是怎么回事,但你应该借鉴行GroupBox的Paint事件,而不是Form的。



文章来源: Drawing a line in Winforms