2 / 2 / 1
Регистрация: 26.02.2011
Сообщений: 64
|
|
1 | |
[WPF] Ускорение ресайза окон13.05.2011, 17:20. Показов 1936. Ответов 6
Метки нет Все метки)
(
Можно ли как-то для окна задать такое поведение, что при изменение его размера, содержимое не меняло размер динамически или же просто как-то упростить пересчет размеров содержимого при ресайзе окна? А само изменение размеров происходило бы только, когда изменение размеров окна закончено (юзер отпустил мышку).
Просто у меня в окне есть очень ресурсоемкий график на базе ZedGraph внутри WindowsFormsHost и при изменении размеров окна этот график постоянно перерисовывает себя, хотя этого не нужно.
0
|
|
13.05.2011, 17:20 | |
Ответы с готовыми решениями:
6
Наследование WPF-окон
WPF: взаимодействие нескольких окон с одной ViewModel |
132 / 99 / 11
Регистрация: 21.11.2007
Сообщений: 544
|
|
13.05.2011, 22:27 | 2 |
Ну во-первых, лучше отказаться от захощщивания чартов через WinForms - есть, к примеру, чарт D3 для WPF (Dynamic Data Display). Мельком глянул - вроде шустрая. Есть Visifire, но этот продукт тяжелее (но можно поднастроить, чтоб без красотулек).
А по сабжу, навскидку - Можно установить выравнивание для WinFormsHost'а влево/вверх и менять ширину по размеру окна приложения когда юзер отпускает мышку. Но это Мега-Костыль. ПыСы: Я НЕНАВИЖУ ВИЗИФАЙР!!! и это был не CAPS.. я шифт держал лбом )))
0
|
2 / 2 / 1
Регистрация: 26.02.2011
Сообщений: 64
|
|
13.05.2011, 22:37 [ТС] | 3 |
Dynamic Data Display пробовал, слишком тяжелый для моих графиков. Впрочем, как и все граферы для WPF.
ZedGraph на несколько порядков быстрее, без преувеличения. А вообще самый быстрый вариант - это Microsoft Chart Controls с графиками типа FastLine. Быстрее, пока ничего не видел. Короче, я так понял, простым способом тут не извернуться. Может можно как-то перехватить момент начала изменения размеров окна? Для окончания изменения, вроде, видел событие SizeChanged. Тогда можно было бы просто отключать контрол во время изменения размеров и включать по окончании.
0
|
132 / 99 / 11
Регистрация: 21.11.2007
Сообщений: 544
|
|
13.05.2011, 23:00 | 4 |
Если хочешь, можно по событию (Preview)MouseLeftButtonDown устанавливать this.Visibility = Visibility.Hidden или вообще Collapsed. По событию (Preview)MouseLeftButtonUp устанавливать видимость в Visible. "(Preview)" - события с этим префиксом срабатывают самыми первыми. Возможно пригодится.
Но по-хорошему это не есть "User Friendly"...
1
|
2 / 2 / 1
Регистрация: 26.02.2011
Сообщений: 64
|
|
14.05.2011, 08:43 [ТС] | 5 |
К несчастью, события мыши не вызываются, если нажатие происходит на границе окна.
![]()
0
|
10 / 10 / 1
Регистрация: 02.04.2011
Сообщений: 95
|
|
14.05.2011, 09:14 | 6 |
на LostMouseCapture для формы попробуй перерисовывать график
1
|
132 / 99 / 11
Регистрация: 21.11.2007
Сообщений: 544
|
|
14.05.2011, 09:19 | 7 |
А ResizeGrip нельзя заюзать. Или вообще для ресайза в угол формы положить свой контрол, а границы окошка сделать нересайзовыми.
1
|
14.05.2011, 09:19 | |
Помогаю со студенческими работами здесь
7
Создание нескольких окон при старте приложения в WPF [WPF] Создание динамического количества окон(текст блоков)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |