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

コンストラクターでこのメソッドを呼び出す場合、子コントロールやグラフィックオブジェクトが使用可能であると想定することはできません。フォームのOnPaintメソッドを使用するか、カスタムコントロールを作成して、そこでOnPaintをオーバーライドします。

于 2012-05-23T06:45:24.073 に答える