C# 面板中的图形故障

C# 面板中的图形故障,c#,visual-studio-2010,graphics,panel,C#,Visual Studio 2010,Graphics,Panel,我试图在我的表格上画一个面板的基本形状。到目前为止,什么都没有发生,我也不知道为什么。这个方法是在我表单的构造函数中调用的 private void doGraphics() { Pen p = new Pen(Color.Black);//draws wire frame Shapes SolidBrush sb = new SolidBrush(Color.Yellow);//draws filled Shapes Graphics g

我试图在我的表格上画一个面板的基本形状。到目前为止,什么都没有发生,我也不知道为什么。这个方法是在我表单的构造函数中调用的

private void doGraphics()
    {
        Pen p = new Pen(Color.Black);//draws wire frame Shapes
        SolidBrush sb = new SolidBrush(Color.Yellow);//draws filled Shapes
        Graphics g = panel1.CreateGraphics();


        Point[] pointArray = { new Point(100, 20), new Point(100, 0), new Point(120, 0), new Point(120, 20) };
        g.FillPolygon(sb, pointArray);
        g.DrawPolygon(p, pointArray);
    }

任何建议都很好

您需要注册到面板的
Paint
事件,并使用参数附带的图形对象:

在构造函数中:

panel1.Paint += new PaintEventHandler(panel1_Paint);
处理程序本身:

void panel1_Paint(object sender, PaintEventArgs e) {
{
        Pen p = new Pen(Color.Black);//draws wire frame Shapes
        SolidBrush sb = new SolidBrush(Color.Yellow);//draws filled Shapes
        Graphics g = e.Graphics; // From Arguments


        Point[] pointArray = { new Point(100, 20), new Point(100, 0), new Point(120, 0), new Point(120, 20) };
        g.FillPolygon(sb, pointArray);
        g.DrawPolygon(p, pointArray);
}

在构造函数中调用此方法时,不能假定子控件和/或图形对象可用。使用表单的OnPaint方法或创建自定义控件并覆盖OnPaint。

99%的时间调用
CreateGraphics
是错误的。如果要调用它,请执行
panel1。刷新()
@Kyborek:
无效
通常是更好的选择<代码>刷新强制立即重画。@根据需要重新绘制。只是为了避免类似“它只在表单加载时绘制,如何重新绘制它?”