Информация об изменениях

Сообщение Re[2]: как на .NET ( желательно WPF ) быстро рисовать много от 07.07.2020 13:07

Изменено 07.07.2020 13:13 okon

Re[2]: как на .NET ( желательно WPF ) быстро рисовать много текста
Здравствуйте, Слава, Вы писали:

С>Здравствуйте, okon, Вы писали:


O>>Да есть уже какие-то контролы сторонние типа AvalonEdit, есть FlowDocument и пр.

С>FlowDocument адски тормозит. Я делал печать в XPS и просмотрщик этого формата заметно задумывался при скроллинге. Может конечно я неправильно с форматом обращался, но по-моему, всё было сделано просто по руководству из книжки по WPF.

O>>Например вы хотите сделать инструмент аналог Merge , т.е. где сравниваются два текстовых файла со своей логикой разметки, подстветки и UI для мержа внутри контролов.


С>Для своего аналога merge я бы сделал нечто вроде двух виртуальных списков слева и справа. Скорллинг бы замещал элементы в списке, но сам список был бы размером с окно, а не прокручивался внутри окна.


Возможно я не совсем понял идею — но зачем замещать элементы — чем это будет отличаться от рисования на 1 элементе который называется экран. или панель справа, панель слева.
Т.е. условно


алгоритм А

заливаем область панели цветом фона
для каждой строки
рисуем текст строки

Алгоритм Б

разбиваем панель на строки
для каждой строки
заливаем область строки цветом фона
рисуем текст строки


по мне это столько же текста придется рисовать — т.е. рисовать текст на весь экран.
поможет копирование и переиспользование элемента при скроллинге ( без повторного рисования текста ), но это поможет только при плавном построчном скроллинге,
если будет что-то типа PageUp/Down когда ранее отрисованные строки будут всегда не актуальны то придется перерисовывать весь экран.
Re[2]: как на .NET ( желательно WPF ) быстро рисовать много
Здравствуйте, Слава, Вы писали:

С>Здравствуйте, okon, Вы писали:


O>>Да есть уже какие-то контролы сторонние типа AvalonEdit, есть FlowDocument и пр.

С>FlowDocument адски тормозит. Я делал печать в XPS и просмотрщик этого формата заметно задумывался при скроллинге. Может конечно я неправильно с форматом обращался, но по-моему, всё было сделано просто по руководству из книжки по WPF.

O>>Например вы хотите сделать инструмент аналог Merge , т.е. где сравниваются два текстовых файла со своей логикой разметки, подстветки и UI для мержа внутри контролов.


С>Для своего аналога merge я бы сделал нечто вроде двух виртуальных списков слева и справа. Скорллинг бы замещал элементы в списке, но сам список был бы размером с окно, а не прокручивался внутри окна.


Возможно я не совсем понял идею — но зачем замещать элементы — чем это будет отличаться от рисования на 1 элементе который называется экран. или панель справа, панель слева.
Т.е. условно


алгоритм А

заливаем область панели цветом фона 
для каждой строки
   рисуем текст строки


Алгоритм Б

разбиваем панель на строки
для каждой строки
    заливаем область строки цветом фона
    рисуем текст строки



по мне это столько же текста придется рисовать — т.е. рисовать текст на весь экран.
поможет копирование и переиспользование элемента при скроллинге ( без повторного рисования текста ), но это поможет только при плавном построчном скроллинге,
если будет что-то типа PageUp/Down когда ранее отрисованные строки будут всегда не актуальны то придется перерисовывать весь экран.