1

こんにちは、ばかげた質問かもしれませんが、ここで問題を理解できません..フォームに単一のブロックを入力するコードは次のとおりです。

        private void drawBackground()
    {
        Graphics g = genPan.CreateGraphics();
        Image Block = Image.FromFile(@"C:\Users\Administrator\Desktop\movment V1\movment V1\images\BrownBlock.png");
        float recWidth = Block.Width; 
        // rectangle width didnt change the name from previous code, it's picture width.

        float recHeight = Block.Height;
        // rectangle Heightdidnt change the name from previous code, it's picture Height.

        float WinWidth = genPan.Width; // genPan is a panel that docked to the form

        float WinHeight = genPan.Height;

        float curWidth = 0; //indicates where the next block will be placed int the X axis
        float curHeight = 0;//indicates where the next block will be placed int the Y axis

        while ((curHeight + recHeight) <= WinHeight)
        {
            if (curWidth >= WinWidth / 3 || curWidth <= WinWidth / 1.5 ||
                curHeight >= WinHeight / 3 || curHeight <= WinHeight / 1.5)
            {
                g.DrawImage(Block, curWidth, curHeight, recWidth , recHeight );
            }
            curWidth += recWidth;
            if ((WinWidth - curWidth) < recWidth)
            {
                curWidth = 0;
                curHeight += 50;
            }
        }
    }

ボタンからこの関数を起動すると、完全に正常に動作します。しかし、InitializeComponent(); の後に func を起動すると、コンストラクターのメソッドまたは FORM 表示イベントで、ボタンがまだフォーム上にある間に機能を実行しますが、ブロックの背景は表示されませんが、灰色は表示されます。しかし、ボタンを削除すると、背景が表示されます。=\

なぜそれが起こっているのか、それを修正する方法、そして何が間違っているのか理解できません..誰か説明してもらえますか..?

4

0 に答える 0