|
4 / 4 / 2
Регистрация: 11.10.2007
Сообщений: 52
|
|
.NET 4.x Border в WPF - изменение размеров и перемещение22.09.2015, 13:00. Показов 9097. Ответов 16
Метки нет (Все метки)
1. Подскажите, пожалуйста, как правильно реализовать следующий вариант визуализации при изменении размеров и перемещении элемента Border, размещённого в Canvas:
1.1. При попадании курсора (с любого направления движения) на границу Border возникают соответствующие стрелки направления изменения границы (Cursors.SizeWE или Cursors.SizeNS). Если при наличии вышеуказанных курсоров нажимается левая кнопка мыши и начинается движение мыши (изменение размеров), то: a) блокируется возможность перемещения курсора мыши в направлении, перпендикулярном стрелке курсора; 1.2. Если левая кнопка мыши не нажата, при выходе курсора за границы Border, курсор изменяется на стандартный Cursors.Arrow.Из того, что удалось найти, ближе всего пример http://denismorozov.blogspot.r... ntime.html. Основная проблема, что в этом примере во многом некорректно работает 1.1 и совсем не работает функционал 1.2. Сейчас решаю это следующим образом: a) Записал обработчик MouseMove в <Window x:Class="ExampleResize.MainWindow" MouseMove="mainwindows_MouseMove" …> и запоминаю координаты курсора через Mouse.GetPositionПолагаю, что в моём решении крайне негативным является то, что при любом движении мыши запускается пункт а), поэтому прошу помочь найти другое решение. 2. Подскажите, пожалуйста, может быть есть какой-нибудь бесплатный компонент для WPF, который: 2.1. Можно настроить внешний вид как у Border.
0
|
|
| 22.09.2015, 13:00 | |
|
Ответы с готовыми решениями:
16
Анимация фигуры - изменение размеров и перемещение
Перемещение и изменение размеров UserControl в Window посредством мышки |
|
Жуткая тВарЬ
|
|||||||||||
| 22.09.2015, 17:10 | |||||||||||
|
Ну например модно тупо сделать свой контрол, вот небольшой примерчик (не контрол) как это реализовать:
Разметка (тут сделана в окне, но можно все перенести в usercontrol унаследованный от Border): Кликните здесь для просмотра всего текста
Код обработки событий: Кликните здесь для просмотра всего текста
2
|
|||||||||||
|
4 / 4 / 2
Регистрация: 11.10.2007
Сообщений: 52
|
|
| 22.09.2015, 18:47 [ТС] | |
|
Спасибо amarf за интересное решение путём добавления в Border четырёх Rectangle и Grid. К нему осталось добавить только перетаскивание.
0
|
|
|
burning1ife
|
|
| 23.09.2015, 00:28 | |
|
1
|
|
|
4 / 4 / 2
Регистрация: 11.10.2007
Сообщений: 52
|
||||||
| 24.09.2015, 09:10 [ТС] | ||||||
|
kenny69, спасибо за подсказку с behaviors.
Помогите, пожалуйста, заполнить xaml для реализации класса, указанного в вашей ссылке. Я подключил xmlns:i="clr-namespace:System.Windows.Interactivity;a ssembly=System.Windows.Interactivity". Создал отдельным файлом класс DragInCanvasBehavior и подключил его xmlns:dar="clr-namespace: DragAndResize" Прописываю:
0
|
||||||
|
Заблокирован
|
|||||||||||
| 24.09.2015, 10:06 | |||||||||||
|
NewEd, по ссылке все есть:
2
|
|||||||||||
|
4 / 4 / 2
Регистрация: 11.10.2007
Сообщений: 52
|
||||||||||||||||
| 24.09.2015, 13:49 [ТС] | ||||||||||||||||
|
Спасибо Ev_Hyper.
Стыдно признаться, не до конца отработал эту часть. Дело в том, что у меня на строке <dar: DragInCanvasBehavior/> VisualStudio показывает в ErrorList ошибку (почему?):
Однако после того, как я всё же запустил код на исполнение, перемещение отлично отрабатывает. Код в XALM Кликните здесь для просмотра всего текста
Код класса в файле DragAndResize.cs Кликните здесь для просмотра всего текста
0
|
||||||||||||||||
|
4 / 4 / 2
Регистрация: 11.10.2007
Сообщений: 52
|
|
| 25.09.2015, 22:10 [ТС] | |
|
Ещё раз благодарю всех за помощь. На основе полученных советов создал и приложил архив с примером перемещения и изменения размеров элемента Border (в Reference нужно будет подключить System.Windows.Interactivity). Буду рад, если он окажется полезен таким же бегинерам как я.
0
|
|
|
4 / 4 / 2
Регистрация: 11.10.2007
Сообщений: 52
|
||||||
| 25.09.2015, 22:25 [ТС] | ||||||
|
Ещё вопрос.
В решении, которое находится в файле ShapeDragAndResize.rar, функционал перемещения элемента находится в файле класса RectDragAndResize.cs, а функционал изменения размеров в MainWindow.xaml.cs. Наверное, более правильным было бы перенести код функционала изменения размеров тоже в файл класса RectDragAndResize.cs? Как правильно это сделать и как тогда нужно будет подключить Rectangle_MouseDown и Rectangle_MouseUp?, которые сейчас прописаны в MainWindow.xaml.cs и подключены в Grid.
0
|
||||||
|
Жуткая тВарЬ
|
|
| 26.09.2015, 08:43 | |
|
NewEd, правильно это сделать свой контрол наследник бордер и использовать его в приложение, в него же это все можно поместить. Единственное что логика изменения размеров должна быть универсальное а не только для канвы.
0
|
|
|
4 / 4 / 2
Регистрация: 11.10.2007
Сообщений: 52
|
|
| 26.09.2015, 13:58 [ТС] | |
|
amarf, спасибо за ответ.
Я изучаю и такой вариант - сделать собственный контрол. Однако мне нужно понять, как можно сделать и тот вариант о котором я спрашивал выше (26.09.2015 в 22:25).
0
|
|
|
Жуткая тВарЬ
|
||
| 26.09.2015, 14:10 | ||
|
Добавлено через 50 секунд Все что делалось в этой теме можно оформить как юзер контрол и не париться .... даже менять особо ни чего не прижется
0
|
||
|
4 / 4 / 2
Регистрация: 11.10.2007
Сообщений: 52
|
|
| 26.09.2015, 15:23 [ТС] | |
|
amarf, спасибо за ответ.
У меня получается лучше осваивать язык, когда конкретную задачу решаю параллельно с погружением в теорию. Пока читаешь академические труды кажется всё более-менее понятным. Когда переходишь к реальной задаче, возникают ньюансы и сложности.
0
|
|
|
0 / 0 / 0
Регистрация: 19.05.2019
Сообщений: 46
|
|
| 21.05.2020, 20:12 | |
|
А можно пример данного пользовательского компонента?
0
|
|
|
0 / 0 / 0
Регистрация: 19.05.2019
Сообщений: 46
|
|
| 22.05.2020, 15:08 | |
|
0
|
|
|
Модератор
|
||
| 22.05.2020, 15:11 | ||
|
В ней может сослаться (если надо) на эту тему. Так быстрее ответят.
0
|
||
| 22.05.2020, 15:11 | |
|
Помогаю со студенческими работами здесь
17
Как запретить перемещение по экрану и изменение размеров формы
Графика: Построить объемный чертеж и обеспечить изменение его размеров и перемещение
Изменение размеров рисунка при изменении размеров области вывода (окна) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|