OnPaint Wpf
От: VVVa  
Дата: 05.05.23 06:57
Оценка: :)
Почему в WPF событие OnPaint не такое как в WinForms
В WinForms это событие было сделано по уму — покуда не закончишь рисовать на экране перерисовки незаконченной не будет
Неужели оно кому-то мешало?
Re: OnPaint Wpf
От: Mr.Delphist  
Дата: 06.05.23 16:18
Оценка:
Здравствуйте, VVVa, Вы писали:

VVV>Почему в WPF событие OnPaint не такое как в WinForms

VVV>В WinForms это событие было сделано по уму — покуда не закончишь рисовать на экране перерисовки незаконченной не будет

Опишите подробнее, какую задачу решаете? Не борьбу с OnPaint, а именно что надо получить от софта, какое поведение?
Re[2]: OnPaint Wpf
От: VVVa  
Дата: 09.05.23 14:50
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

MD>Опишите подробнее, какую задачу решаете? Не борьбу с OnPaint, а именно что надо получить от софта, какое поведение?

Ну тут вопрос был в общем ...
Хотя была такая проблема которую я в WPF не решил из-за OnPaint
Например костомный контрол подсветки синтаксиса — нужно выводить разноцветный текст а вот низкоуровневых функций рисования нету...
Re[3]: OnPaint Wpf
От: romangr Россия  
Дата: 10.05.23 08:25
Оценка: 3 (1)
Здравствуйте, VVVa, Вы писали:

VVV>Хотя была такая проблема которую я в WPF не решил из-за OnPaint

VVV>Например костомный контрол подсветки синтаксиса — нужно выводить разноцветный текст а вот низкоуровневых функций рисования нету...

А чем готовый AvalonEdit не подошел?
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[4]: OnPaint Wpf
От: VVVa  
Дата: 10.05.23 10:41
Оценка:
Здравствуйте, romangr, Вы писали:

R>А чем готовый AvalonEdit не подошел?


Интересный компонент... а он отрисовку на WPF делает?
Или WPF у него только скрол?
Re[5]: OnPaint Wpf
От: VVVa  
Дата: 10.05.23 10:44
Оценка:
Здравствуйте, VVVa, Вы писали:

VVV>Интересный компонент... а он отрисовку на WPF делает?

VVV>Или WPF у него только скрол?

Вроде WinForms ... там очень много "System.Windows.Forms.Screen..."
Ещё подтверждает тот факт что WPF не панацея, а WinForms универсальней!!!
Отредактировано 10.05.2023 10:46 VVVa . Предыдущая версия .
Re[5]: OnPaint Wpf
От: romangr Россия  
Дата: 10.05.23 11:12
Оценка:
Здравствуйте, VVVa, Вы писали:

VVV>Интересный компонент... а он отрисовку на WPF делает?

VVV>Или WPF у него только скрол?

Ссылка на github на сайте имеется, и судя по коду, отрисовка у него на WPF.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[5]: OnPaint Wpf
От: syrompe  
Дата: 10.05.23 11:12
Оценка: 3 (1)
Здравствуйте, VVVa, Вы писали:

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


R>>А чем готовый AvalonEdit не подошел?


VVV>Интересный компонент... а он отрисовку на WPF делает?

VVV>Или WPF у него только скрол?

Насколько я помню, когда его изучал, отрисовка таки WPF. Такая же используется в редакторе студии.
System.Windows.Media.TextFormatting курите.

Но контрол довольно таки тяжеловесный. На него навешано слишком много всего, а вырезать безболезненно его плюшки как-то сложновато было.
Re[6]: OnPaint Wpf
От: VVVa  
Дата: 10.05.23 12:11
Оценка:
Здравствуйте, syrompe, Вы писали:

S>Насколько я помню, когда его изучал, отрисовка таки WPF. Такая же используется в редакторе студии.

S>System.Windows.Media.TextFormatting курите.

S>Но контрол довольно таки тяжеловесный. На него навешано слишком много всего, а вырезать безболезненно его плюшки как-то сложновато было.


если там всё на WPF то что там делает "System.Windows.Forms..." ? — это WinForms как ни как.
Re[7]: OnPaint Wpf
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 10.05.23 14:45
Оценка: 3 (1)
Здравствуйте, VVVa, Вы писали:

VVV>если там всё на WPF то что там делает "System.Windows.Forms..." ? — это WinForms как ни как.

Ну так поищите по коду и узнаете.
Я вот с ходу нашел, что из пространства System.Windows.Forms используются 2 класса:
Screen в 2-х местах:
Rect workingScreen = System.Windows.Forms.Screen.GetWorkingArea(location.ToSystemDrawing()).ToWpf();

и
Rect workingArea = System.Windows.Forms.Screen.FromPoint(pointOnScreen.ToSystemDrawing()).WorkingArea.ToWpf().TransformFromDevice(this);

Cursor тоже в 2-х:
System.Windows.Forms.Cursor.Show();

и
System.Windows.Forms.Cursor.Hide();


Может я чего-то еще пропустил (я тупо поискал по текстовой строке с именем немспейспа), но из того, что я нашел очевидно следует, что WinForms тут абсолютно не при делах и используется он только из-зав 2-х сугубо утилитарных классов.
Наверное, можно было бы обойтись и без них (подозреваю, что там не столь ужи замысловатый код — можно было воспроизвести), вот только смысл?
Re[8]: OnPaint Wpf
От: MonsterZam СССР  
Дата: 11.05.23 09:37
Оценка: 12 (1)
Здравствуйте,

МР>
System.Windows.Forms.Cursor.Show();

МР>и
МР>
System.Windows.Forms.Cursor.Hide();


в WPF с курсором работают через: System.Windows.Input.Mouse, OverrideCursor
Re[9]: OnPaint Wpf
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 11.05.23 16:07
Оценка:
Здравствуйте, MonsterZam, Вы писали:

MZ>в WPF с курсором работают через: System.Windows.Input.Mouse, OverrideCursor

Слушайте, даже не знаю...
С ходу, вроде бы, ваш вариант вполне закрывает задачу скрыть/показать курсор (ну может чуть сложнее, чем WinForms).
Почему не перешли на него сказать не могу. Может "так исторически сложилось", а может есть неочевидные нюансы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.