![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| th1nker |
|
|||
|
Покоряю вселенную... ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 25.8.2008 Где: Калуга Репутация: нет Всего: 2 |
Привет всем!!! Помогите мне, пожалуйста, решить одну проблему...
Суть проблемы: Я создаю программу, векторный редактор. Я хочу, чтобы в моей программе, как и в почти всех векторных редакторах, присутствовала возможность отображения текущих координат мыши. Я это реализовал. Все работает отлично, если не происходит графических обновлений формы (методом Invalidate(rect) ). Но если таковые все-таки присутствуют, например при создании какого-нибудь графического объекта (все происходит динамически, то есть пользователь жмет кнопку мыши, протягивает ее, и динамически отрисовывается создаваемая фигура, например как в CorelDraw), начинаются жуткие тормоза: координаты мыши отображаются рывками. То есть если я резко двигаю указатель мыши, по идее должны последовательно отображаться координаты всех пикселов, через которые я провожу указатель мыши, но такого не происходит. Доходит даже до абсурда, если резко двигать мышь в течении какого-то отрезка времени, отображающиеся координаты вообще не меняются. :( Повторюсь, если не происходит активных графических обновлений, все работает отлично. Может, стоит копать в сторону многопоточности? Заранее благодарен... |
|||
|
||||
| antslava |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 16.7.2008 Где: Одесса Репутация: нет Всего: 2 |
а можно исходник или пример кода где ты обрабатываешь координаты. Сорри навык телепатии еще не сильно развит.
|
|||
|
||||
| th1nker |
|
||||
|
Покоряю вселенную... ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 25.8.2008 Где: Калуга Репутация: нет Всего: 2 |
Можно конечно
Если метод this.Invalidate(), исходя из текущего состояния программы, не выполняется, то все работает достаточно быстро. |
||||
|
|||||
| DVariuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 10.2.2009 Где: Ukraine Репутация: нет Всего: 8 |
th1nker, у тебя слишком часто выполняется this.Invalidate() - достаточно ресурсоемкий метод. Попробуй снизить частоту вызова перерисовки формы, например:
|
|||
|
||||
| th1nker |
|
|||
|
Покоряю вселенную... ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 25.8.2008 Где: Калуга Репутация: нет Всего: 2 |
DVariuS, спасибо тебе огромное
Твой метод сработал. Причем даже если вместо числа 20 подставить число 1, все равно работает быстро и не тормозит. Проблема решена, еще раз спасибо! |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |