2

我试图在我的表单上的面板上绘制基本形状。到目前为止什么也没发生,我不知道为什么。此方法在我的表单的构造函数中调用。

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);
    }

任何建议都会很棒!

4

2 回答 2

2

您需要注册到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);
}
于 2012-05-23T06:42:32.623 回答
0

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

于 2012-05-23T06:45:24.073 回答