私はPacmanがマウスポインタを追いかける、とても簡単なゲームを作った。 しかし、場所が変わるたびに、画像が表示されているpacMan - Panelがちらつきます。場所を変更するときのWinFormのちらつき制御
private void Move_Tick(object sender, EventArgs e)
{
int newPositionX = pacMan.Location.X;
int newPositionY = pacMan.Location.Y;
lblMousX.Text = PointToClient(Cursor.Position).X.ToString();
lblMouseY.Text = PointToClient(Cursor.Position).Y.ToString();
lblThingX.Text = pacMan.Location.X.ToString();
lblThingY.Text = pacMan.Location.Y.ToString();
if (pacMan.Location.X + 15 < PointToClient(Cursor.Position).X)
{
newPositionX = pacMan.Location.X + 1;
if (pacMan.BackgroundImage != Properties.Resources.Pac_Rechts)
pacMan.BackgroundImage = Properties.Resources.Pac_Rechts;
}
if (pacMan.Location.X + 15 > PointToClient(Cursor.Position).X)
{
newPositionX = pacMan.Location.X - 1;
if (pacMan.BackgroundImage != Properties.Resources.Pac_Links)
pacMan.BackgroundImage = Properties.Resources.Pac_Links;
}
if (pacMan.Location.Y + 15 < PointToClient(Cursor.Position).Y)
{
newPositionY = pacMan.Location.Y + 1;
if (pacMan.BackgroundImage != Properties.Resources.Pac_Unten)
pacMan.BackgroundImage = Properties.Resources.Pac_Unten;
}
if (pacMan.Location.Y + 15 > PointToClient(Cursor.Position).Y)
{
newPositionY = pacMan.Location.Y - 1;
if (pacMan.BackgroundImage != Properties.Resources.Pac_Oben)
pacMan.BackgroundImage = Properties.Resources.Pac_Oben;
}
pacMan.Location = new Point(newPositionX, newPositionY);
}
すでに「DoubleBuffered」をtrueに設定していますが、何も変更されませんでした。
どうすればそのフリッカーを取り除くことができますか?
同上問題はより多くのあなたのドロー・ルーチンであると想像。 – BugFinder
もう少し詳しくお聞かせください。 – Julian