Отложенная запись WriteableBitmap в фоновом потоке вызывает мерцаниеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Отложенная запись WriteableBitmap в фоновом потоке вызывает мерцание

Сообщение Anonymous »

Я работаю над пользовательским элементом WPF Framework, который записывает в WriteableBitmap, а затем отображает растровое изображение в элементах OnRender().
Поскольку запись в WriteableBitmap может быть немного медленно (из-за алгоритма, который я вычисляю в этот момент) и того факта, что мне нужно отобразить 36 таких элементов, я хочу выполнить работу по обновлению WriteableBitmap в фоновом потоке.
Итак, я придумал следующее, что значительно повышает производительность. Проблема в том, что все работает нормально, если я создаю только 8 или меньше таких элементов, но если я создаю еще, например, запрошенные 36, при изменении размера окна у меня появляется мерцание на всех элементах, кроме первых 8?
Есть идеи, что может быть причиной этого?
Элемент рендеринга:
public class Renderer : FrameworkElement
{
private WriteableBitmap? _bitmap, _previousBitmap;
private long _pBackBuffer = 0;
private int _backBufferStride = 0, _backBufferWidth = 0, _backBufferHeight = 0;
private SemaphoreSlim _semaphore = new(1, 1);

private void ResizeBitmap()
{
int width = (int)ActualWidth;
int height = (int)ActualHeight;

if (width
{
_semaphore.Wait();

unsafe
{
int* pPointer = (int*)_pBackBuffer;
int stride = _backBufferStride / 4;

// simulate slowness
Thread.Sleep(10);

// render a gradient for demo purposes
for (int i = 0; i < _backBufferHeight; ++i)
{
byte x = (byte)(255d / _backBufferHeight * i);
for (int j = 0; j < _backBufferWidth; ++j)
{
pPointer[i * stride + j] = 255

Подробнее здесь: https://stackoverflow.com/questions/784 ... es-flicker
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Странность с WriteableBitmap в WPF
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Повреждение памяти Avalonia WriteableBitmap в тестах XUnit/NUnit, но не в работающем приложении
    Anonymous » » в форуме C#
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Повреждение памяти Avalonia WriteableBitmap в тестах XUnit/NUnit, но не в работающем приложении
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Обновление привязки текста списка вызывает мерцание на iOS с помощью Xamarin.Forms
    Anonymous » » в форуме IOS
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Iframe Изменение размера вызывает мерцание при использовании различного происхождения
    Anonymous » » в форуме Html
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»