0

私のコードが実際に適切に描画される時間の約 3 分の 1 しか実行されない場合、残りの部分では一部の線が描画されません。

Pen pen = new Pen(Color.Black);
        Graphics graphics = MainFrm.HangmanImage.CreateGraphics();
        switch (NoOfGuesses)
        {
            case 1://Bottom left leg
                graphics.DrawLine(pen, 15, 60, 40, 60);
                break;
            case 2://Bottom right leg
                graphics.DrawLine(pen, 40, 60, 55, 60);
                break;
            case 3://Middle stock
                graphics.DrawLine(pen, 34, 20, 34, 60);
                break;
            case 4: //Top line
                graphics.DrawLine(pen, 34, 20, 55, 20);
                break;
            case 5: //Rope
                graphics.DrawLine(pen, 55, 20, 55, 25);
                break;
            case 6: //Head
                graphics.DrawEllipse(pen, (new Rectangle { X=52, Y=25, Height=5, Width=5 }));
                break;
            case 7: //Body
                graphics.DrawLine(pen, 55, 30, 55, 35);
                break;
        }
        pen.Dispose();
        graphics.Dispose();
4

2 に答える 2

0

確かに十分な情報ではありませんが、最初に、変数「NoOfGuesses」が常に 1 ~ 7 の値であることを確認します。0 または 8 の値は何もしません。第二に、「NoOfGuesses」が何らかの理由でその範囲外にある場合に備えて「デフォルト」のケースを追加し、それにも線を引きます。

于 2013-07-17T22:07:17.090 に答える
0

フォームのペイントイベントでこのコードを実行することでこれを修正しました.フォームを再描画するたびにそれを忘れていたようです.

于 2013-07-17T22:31:20.703 に答える