у меня на контроле много линий (некая картинка векторная)
при перемещение контрола (на котором линии), всё замирает, короче он их заново перерисовывает, можно ли это как-то обойти, как напирмер в GDI там всё нарисовали а уж потом нарисованную картинку отображали.
Поэкспериментируйте с различными событиями
например?
у меня контрол эмулирует дочернюю форму, а в нем 12 000 линий так вот когда контрол перемещаю всё и происходит, либо меняю его размер
Вы задаете слишком абстрактные вопросы. На них просто невозможно ответить. Нет информации о том, как вы строите свой контрол, какой код и т.д. Пожалуйста будьте более точны в формулировке вопросов, т.к. вопросы типа "Почему моя программа работает не так как надо" имеют только один ответ "Вам видней"
Хорошо.
я задавал вопрос в другой теме, по поводу mdi интерфейса. я сам сделал контрол, как форма (дочерняя) MDI, со всеми свойсвами формы. в форме лежит Grid, в которыя я програмно добовляю
//Это я рисую на моём контроле форме
for(int i=0;i<12000;i++)
{
Polyline pl = new Polyline();
pl.Stroke = Brushes.Black;
pl.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
pl.VerticalAlignment = System.Windows.VerticalAlignment.Top;
pl.StrokeThickness = 1;
pl.Points = new PointCollection(count);
//тут я заполняю координаты
this.WorkPlace.Children.Add(pl);
}
далее если мой контрол форму, переместить, а перемещаю я свойством Margin (тоже самое если задать размер например изменить свойство Width). то похоже что все мои линии перерисовываются что очень тормозно, да положение контрола формы я меняю програмно.
а да дочерняя форма (контрол) соответсвенно лежит на реальной форме
Давайте для начала попробуйте запустить тотже проект на компьютере с RC1-версией WPF. Дело в том, что сравнивая как работает Avalon-код на XP-Net3June и в Vista RC1, я обнаружил разительный прирост производительности. Попробуйте перекомпилировать проект для RC1
попробывал RC1 ничего не изменилось.
может подскажешь как сохранить изображение в картинку и при подобных случаях подставлять её?
всё-таки не понятно что в авалоне было сделано в замен старой доброй двойной буферизации и всё-такое, ведь раньше эту проблемму описывали, использовали подход с двойной буферизацией, но пока не вижу как решить проблемму это раз, и почему вовобще когда двигается контрол, те контролы которые в находятся в нём перерисовываются.
Отвечаю сам себе, покрайней мере если заменить UserControl на Canvas (т.е. я унаследовался не от юзерконтрола а от поверхности), сделав свой контрол то многие дейсвия стали значительно быстрее (медленно хотя, но уже приемлемо хоть).