こんにちは、ばかげた質問かもしれませんが、ここで問題を理解することはできません。フォームに単一のブロックを入力するためのコードは次のとおりです。
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で表示されるイベントで、ボタンがまだフォーム上にある間、関数は実行されますが、ブロックの背景は表示されませんが、灰色は表示されます。しかし、ボタンを削除すると、背景が表示されます。= \
なぜそれが起こっているのか、それを修正する方法、そして私が間違っていることを理解することはできません..誰かが説明してもらえますか..?