Перечитал где-то 100 статей уже, да конечно стоит чуть усложнить, и привет мерцания, 4 линии не может нарисовать.
Уже Double Double Трибол буфера делаю, и наверное комбинаций 32 перепробовал. + Еще самой форме даю doubleBuffer=true и все это намешал уже миллион раз, ни чего не помогает.
/// Form1.cs
GameManager = new GameManager{
PaintDilegate = () => this.panelGame.Invalidate(),
PaintInitDilegate = (PaintEventHandler fun) => { this.Paint += fun; },
};
GameManager .init();
}
///////////////////////////
///////// GameManager.cs
class GameManager {
/////
Bitmap DoubleBuffer;
Graphics gBuf;
public init(){
this.PaintInitDilegate?.Invoke( Paint );
}
public void Paint(object sender,PaintEventArgs e)
{
e.Graphics.DrawImage(DoubleBuffer,0,0);
}
/// вызывается в таймере постоянно
public void update(object srnder,PaintEventArgs e){
if(DoubleBuff==null || (DoubleBuf.Width!=Width){
DoubleBuf?.Disponse();
DoubleBuffer = new Bitmap(Width, Height);
gBuf = Graphics.FromImage(DoubleBuffer);
initMap(); // ... нарисовать карту
}
Game.Map.ForEach( (x,y,brushIndex)=>{
///..................
gBuf.FillRect( ....);
}
PaintDilegate?.Invoke(); // отослать панели команду перерисовать
}
}
Вот примерно такой код, если правильно переписал, все работает, нету утечек или чего-то такого,
Но не могу избавиться от Миганий.