2009-10-18 3 views
0

У меня есть проект, в котором я рисую какую-то форму из некоторого слоя. Например, у меня есть два круга в круговом слое и три прямоугольника в слое прямоугольника и т. Д. Я рисую результат с помощью вызова Layer.Draw и переношу результат с помощью объекта Graphics. Я могу выбрать одну фигуру в окне изображения и указать ее на слое. и я могу перетащить его с помощью перерисовывания его слоя и перезагрузить все с помощью graphics.it! но слишком медленно!как перетащить форму в окне изображения?

Как я могу оптимизировать это?

ответ

1

В старом решении я рисую фигуры в layer.image и нарисовываю на них событие с e.Graphic. Я решаю эту проблему, передавая графический объект в слои и рисуя фигуры с ним. моя программа работает очень хорошо!

0

Когда-то у меня был проект, в котором была необходима скорость при рисовании изображений. Я использовал метод разблокировки для прямого доступа к битам (http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.unlockbits.aspx). Но этот метод довольно опасен, а также сложный, поэтому вы должны избегать этого, когда можете.

Просто попробуйте оптимизировать вашу программу и удалить ненужные ничьи. Первичные ссылки на графический интерфейс очень медленные, поэтому старайтесь не обновлять окно изображения постоянно, но только тогда, когда это необходимо.

+0

Я видел в некоторых книгах, что для показа изображения пользователю, эксперты используют пользовательский контроль. и рисовать изображение в те, и когда нужно повторно использовать управление использованием изображения. Неверное() для этого. Что вы думаете? если я использую этот метод, я могу решить проблему? Я тестирую это сейчас! – 2009-10-18 13:01:15

+0

Это было не так, как я, но вы можете попробовать. Попробуйте установить для свойства DoubleBuffered значение true для вашего управления, это повысит производительность. – Emiswelt

Смежные вопросы