MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Как сделать плавную анимацию отрисовки, точнее как овладеть двойной буферизацией?"
Answer 921871
Наилучший результат в большинстве случаев дает следующий способ:
public partial class Form1 : Form { //какие-то переменные для хранения состояния... int x = 0; string FullName = @"C:\Media\test.jpg"; Bitmap image; //включение двойной буферизации на уровне окна protected override CreateParams CreateParams { get { var cp = base.CreateParams; cp.ExStyle |= 0x02000000; // WS_EX_COMPOSITED return cp; } } public Form1() { InitializeComponent(); //логика инициализации image = new Bitmap(FullName); } private void timer1_Tick(object sender, EventArgs e) { //логика изменения картинки (период таймера: 50 - 100 мс) x += 1; if (x > 100) x = 0; panel1.Refresh(); //обновление Panel } private void panel1_Paint(object sender, PaintEventArgs e) { //логика отрисовки e.Graphics.Clear(Color.White); e.Graphics.DrawImage(image, x, 0); } }
Если этот способ не дает желаемого результата в вашем случае, попробуйте что-то из описанного здесь: Windows Forms - Using Double Buffering
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.