У меня есть растровое изображение под названием «буфер», к которому я
- Нарисуйте другое изображение (используя DrawImage)
- Рисование частично прозрачного градиента (с использованием LinearGradientBrush)
Я вызываю Flush(FlushIntention.Sync)
для объекта Graphics буфера после каждого из этих шагов. Затем я рисую содержимое буфера на экранном элементе управления.
Однако во время отладки я заметил, что иногда в буфере не отображается градиент. Что может быть причиной пропуска 2-й операции рисования, даже если я явно вызываю синхронизированную команду очистки?
Есть ли обходной путь?
РЕДАКТИРОВАТЬ: Пример кода
Bitmap background = ....;
Bitmap buffer = new Bitmap(100, 100);
Rectangle bufferBounds = new Rectangle(0, 0, buffer.Width, buffer.Height);
Graphics bufferG = Graphics.FromImage(buffer);
// First step
bufferG.DrawImageUnscaled(background, 0, 0);
bufferG.Flush(FlushIntention.Sync);
// Second step
LinearGradientBrush lgb = new LinearGradientBrush(bufferBounds,
maxColor, minColor, LinearGradientMode.Vertical);
bufferG.FillRectangle(lgb, bufferBounds);
bufferG.Flush(FlushIntention.Sync);