|
605 / 387 / 198
Регистрация: 31.03.2013
Сообщений: 2,687
|
|||||||||||
Контрол для задания угла поворота14.03.2025, 09:01. Показов 1583. Ответов 12
Метки нет (Все метки)
День добрый, хочу сделать свой кастомный контрол, который показывал бы угол поворота в градусах, так вот, сам контрол простой и сделан, а вот логику расчета поворота относительно оси не знаю как посчитать, мб кто-то подскажет и делал уже подобное. Вот разметка:
0
|
|||||||||||
| 14.03.2025, 09:01 | |
|
Ответы с готовыми решениями:
12
Определение угла поворота изображения Контроль угла поворота цилиндра Поворот контрола кодом |
|
605 / 387 / 198
Регистрация: 31.03.2013
Сообщений: 2,687
|
|
| 14.03.2025, 09:03 [ТС] | |
|
Хочу чтобы когда пользователь зажал ЛКМ и потянув в одну из сторон синий шарик вращался относительно оси и показывал угол отклонения, подскажите как такое реализовать можно
0
|
|
|
605 / 387 / 198
Регистрация: 31.03.2013
Сообщений: 2,687
|
||
| 14.03.2025, 10:03 [ТС] | ||
|
0
|
||
|
Модератор
|
|||
| 14.03.2025, 11:26 | |||
|
Если да, то вам тут не команда нужна. Примерный алгоритм: 1) При ЛКМ захватываете мышь "синей точкой" - Mouse.Capture ; 2) После захвата подключаете отслеживание положения курсора; 3) При изменении положения рассчитываете координату курсора относительно центра окружности - Mouse.GetPosition(Центр окружности); 4) По координате курсора рассчитать угол - Math.Atan2(Double, Double); 5) Полученный угол передать в VM через метод или команду. Добавлено через 13 минут
0
|
|||
|
605 / 387 / 198
Регистрация: 31.03.2013
Сообщений: 2,687
|
||||||
| 14.03.2025, 11:42 [ТС] | ||||||
|
В общем, обратился к дик пику
![]() И за минут 5 мы с ним добились желанного результата, если кому-то понадобится, рабочий код тут:
0
|
||||||
|
Модератор
|
|||
| 14.03.2025, 11:51 | |||
|
В VM нужно передавать только значение угла. Добавлено через 2 минуты Самому, как-то всё не хватает времени их поглубже изучить.
0
|
|||
|
605 / 387 / 198
Регистрация: 31.03.2013
Сообщений: 2,687
|
||
| 14.03.2025, 11:52 [ТС] | ||
по хорошему можно спрятать его тогда за Interface с нужными мне свойствами, но это все такое
0
|
||
|
Модератор
|
|||||||
| 14.03.2025, 15:54 | |||||||
|
И прятать за интерфейсом его тоже не надо. Эта логика View, а не ViewModel. Перемешает пользователь точку курсор, или кнопками клавиатуры, или просто задаёт новые координаты или новый угол - для ViewModel это не важно. VM нужно только получить новый угол. А откуда он взялся VM волновать не должно. Добавлено через 2 минуты Достаточно переместить обработчик в Code Behind и там передавать в VM:
Если хочется без Code Behind, то вместо вызова команды в событии надо прописать Behavior.
0
|
|||||||
|
605 / 387 / 198
Регистрация: 31.03.2013
Сообщений: 2,687
|
||||||
| 14.03.2025, 19:09 [ТС] | ||||||
0
|
||||||
|
Модератор
|
||||||
| 14.03.2025, 19:36 | ||||||
|
А причём здесь ваше согласие? Есть требования паттерна вы или соблюдаете их или нет. Но нарушает требования по логическому функционалу. Это вы откуда взяли? В View может сдержаться огромная логика. И никакая XAML разметка не заменит Шарпа (или другого полноценного ЯП). Не путайте Code Behind с любым кодом Шарпа. Но даже Code Behind не нарушает MVVM. Но это альтернатива Code Behind. Если приложение делается "в одного", не требований по тестированию, по поддержке и т.п., то вполне можно использовать и Code Behind. Добавлено через 2 минуты Зачем в консоле IGrid ? ViewModel - это не замена Code Behind для View. Это оболочка для Model, которая делает удобным использование Модели в Представлении. Добавлено через 3 минуты Или другой пример. Вам приспичило заменить Grid на Canvas или на кастомный UIElement, который не предоставляет ActualWidth/Height/ И теперь из-за хотелки дизайнера UI надо вносить изменения в ViewModel? То есть формально IGrid вроде позволяет реализовать слабую зависимость, но логически эта зависимость всё равно остаётся сильной.
0
|
||||||
|
605 / 387 / 198
Регистрация: 31.03.2013
Сообщений: 2,687
|
||||
| 17.03.2025, 09:31 [ТС] | ||||
![]()
0
|
||||
|
Модератор
|
||||
| 17.03.2025, 10:53 | ||||
|
Слой VM - он работает с данными Модели. По сути это просто какая-то оболочка над Моделью, которая позволяет View удобно работать с Моделью. Code Behind - согласен, что ухудшает модульность, тестирование и т.п. В основном используется "для быстрого тестирования" работоспособности каких-то вариантов реализации. Но Шарп в View это не только Code Behind. Это (из того что сразу в голову пришло) конвертеры, расширения разметки, Behavoir, триггера, различные прокси, вспомогательные типы и контейнеры (в том числе локаторы, навигаторы, мессенджеры и т.д.), Custom Control, Attached Property. И всё это прекрасно и удобно тестируется, поддерживается, модернизируется. Так же Canvas не выравнивает свой размер по дочерним, а дочерние по размеру Canvas. Один из типичных примеров использования канвас - это создание Canvas с нулевыми размерами и использование его в центре координатной плоскости. В таком случае Canvas.Top/Left автоматически становятся координатами. А нулевые размеры Canvas никак не мешают выводу дочерних элементов.
0
|
||||
| 17.03.2025, 10:53 | |
|
Помогаю со студенческими работами здесь
13
Поворот прямоугольника относительно левого нижнего угла Поворот фигуры: Как перевести значение угла в число? Что тут неправильно? Расчет углов. Задание манипулятор
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|