|
0 / 0 / 0
Регистрация: 08.08.2020
Сообщений: 2
|
|
GraphWPF: колёсико мыши16.02.2022, 16:32. Показов 955. Ответов 4
Господа, подскажите пожалуйста, надеюсь есть разбирающиеся. Возможно ли подключить колёсико мыши по аналогии с дефолтными событиями OnMouseDown и проч. именно в grapfWPF? (Forms не использую принципиально).
Совершаю тщетные попытки уже больше полгода точно. Если мне не изменяет память, в коде модуля WPF я видел закомментированный кусок про mouse wheel, и при попытке запустить эти обрывки самостоятельно давало непонятную ошибку. Проблема в самом Handler'е как я понимаю. Как подключить и чем различаются эти несколько разных классов eventsargs? Как в принципе работают эти события с sender'ами типа мыши и клавы? (Свои простенькие события я создавал и понимаю их) На эти и другие вопросы мой самоучский мозг никак не может дать ответа. В связи с изложенным у меня и возникло ощущение: может какой конфликт внутри модуля, коли сами разработчики не реализовали это колесико? Возможно ли без forms сделать эти злополучные СкроллБары вручную?
0
|
|
| 16.02.2022, 16:32 | |
|
Ответы с готовыми решениями:
4
колёсико мыши
Колёсико мыши |
|
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
|
||||||||
| 16.02.2022, 17:51 | ||||||||
Сообщение было отмечено xu как решение
Решение
WinForms используется только в GraphABC, а в GraphWPF испольузется WPF.
И WPF вам в любом случае придётся использовать чтобы добраться до события, к которому у вас нет доступа через GraphWPF.
MainWindow и e это части библиотеки WPF:https://docs.microsoft.com/en-... mework-4.8 Поэтому если цель не использования библиотек, на которых основан GraphWPF это принципиальность - вы уже провалились. А если цель реализовать все элементы ручками, вместо того чтобы использовать готовое - я и сам постоянно таким страдаю, так что могу понять. Но для этого надо использовать более низкоуровневые средства, потому что иначе будут фичи которые не доступны из высокоуровневой обёртки как (MouseWheel в GraphWPF), ради которых придётся лепить костыли. Да и тонкости контроля часто будет не хватать для оптимизации.
1
|
||||||||
|
0 / 0 / 0
Регистрация: 08.08.2020
Сообщений: 2
|
||||||||
| 17.02.2022, 02:04 [ТС] | ||||||||
|
Вот этот код.
У меня есть представление о том как создаются и работают события, но исключительно с точки зрения логики кода. Когда дело доходит до событий(да и не только событий), использующих системные методы или классы вроде MouseButtonEventArgs, где логика далеко не на поверхности, мое понимание заканчивается. Поскольку не знаю где почитать или посмотреть о принципе работы, назначении полей и методов классов, прочем важном.
Я действительно не хочу использовать готовое из соображений дизайна. Если бы по аналогии с html-разметкой существовал инструмент придания "стилей" объектам Forms, а их дефолтный вид использовался лишь как структура приложения - я бы прыгал от радости. А так, конечно, у меня нет цели отказаться от WPF библиотек.
Вы не представляете, насколько я Вам благодарен.
0
|
||||||||
|
|
|
| 17.02.2022, 06:52 | |
|
Что касается дизайна, то Вы не совсем правы. WinForms имеет широкие возможности для кастомизации контролов. Конечно какие-то свистелки и блестяшки больше превелегия WPF, но и формы могут выглядеть достаточно современно. В любом случае, Вы можете писать на чистом WPF или WinForms, что не так уж и трудно, если понять основы. Ну а назначение множества модулей Вы поняли по большей части верно. Они больше нужны для обучения, чем для серьёзных проектов. Конечно это относится не ко всем
0
|
|
|
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
|
|||||
| 17.02.2022, 12:02 | |||||
|
Я использовал ПКМ чтобы было видно на видео, но вообще переход к определению/реализации это Ctrl+тык на имя. А вообще самый правильный ответ - никакой. Используйте лямбду для обработчика, как же как в моём примере выше. Подробнее про лямбды найдёте презентацию на официальном сайте: http://pascalabc.net/2-uncateg... zentations Добавлено через 2 минуты А так, чтобы его вызвать вам в любом случае нужен объект к которому применять обработчик (как WPF окно) - а у этого объекта будет ивент MouseWheel, как я уже показал для GraphWPFBase.MainWindow.Добавлено через 52 секунды И постарайтесь писать более рабочий код, а не недописанные куски чего попало. Отвлекает от основного вашего вопроса - какой тип ставить после e:.Добавлено через 9 минут EventArgs-ов. Зачем - честно хз.Могу только дать ссыль на документ о принципиальности от малакасофта: https://docs.microsoft.com/en-... nt-pattern Добавлено через 35 минут https://stackoverflow.com/ques... at-runtime Ну, лично я его никогда не использовал, так что дальше не подскажу. Но основное неудобство WinForms это не отсутствие возможности отдельного описания стилей, а отсутствие стандартизации работы с контролами. К примеру в HTML есть это: https://www.w3schools.com/css/css_boxmodel.asp Этот основной принцип предельно просто описывается, но в то же время позволяет гулять фантазии. В WPF с этим лучше. Не все контролы являются коробками из html, к примеру не у всех есть Padding.Но когда его не хватает - достаточно добавить контрол типа Border, не указав собственно Border, но указав Padding.И на самом деле это не костыль из за лени разработчиков WPF, а результат более строгой типизации типов WPF. Если вы объявляете StackPanel - вы будете использовать его как панельку в которой контролы стакаются друг под другом, а не как ещё одну общеобразную коробку, которая превратится в div если чуток поменять стили, как это работает в html.Этот принцип не редко доставляет неудобства в простых случаях, но в то же время позволяет ещё более тонкий контроль чем html - потому что вы можете написать свой тип контрола, переопределив MeasureOverride и ArrangeOverride и забив в них совершенно любую логику рендеринга.Добавлено через 18 минут А вообще я не собирался пиарить WPF. Я сам сейчас больше копаюсь в ещё более низкоуровневом, вроде OpenGL. Думаю не надо объяснять почему в OpenGL тонкой настройки будет больше чем в любой оконной библиотеке, и взамен на что))) Но если будет интересно - смотрите в папку C:\PABCWork.NET\Samples\OpenGL и OpenCL. Возникнут ещё трудности - могу помочь.Но, к примеру, когда я пишу какую-то утилиту для себя, вроде такой - не знаю что подойдёт больше чем WPF.
0
|
|||||
| 17.02.2022, 12:02 | |
|
Помогаю со студенческими работами здесь
5
Колёсико мыши C++ Колёсико мыши
SB_THUMBTRACK и колесико мыши Не работает колесико мыши Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|