|
0 / 0 / 1
Регистрация: 28.07.2011
Сообщений: 5
|
|
.NET 4.x GDI, глюки при перетаскивании Panel28.07.2011, 16:02. Показов 1902. Ответов 4
Метки нет (Все метки)
Здравствуйте, все, кто сюда заглянул.
Если кто копал GDI, помогите, пожалуйста! В общем, утрированно получается такая схема: на форме есть MyPanel1, на ней: MyPanel2 и PictureBox1 (у всех есть BackgroundImage). MyPanel - класс от Panel с переопределенным конструктором для рисования через DoubleBuffer чтоб не мерцало. есть курсор, который методом перетаскивания меняет координаты MyPanel1, но при перетаскивании происходят глюки. Элементы внутри не перерисовываются и получается что-то типа зависшего окна в Win95/98(да и в других бывает). Как только перетаскивание заканчивается все нормализуется. (см. скриншот) если вызывать Refresh() во время перетаскивания то все начинает глючить и скакать, но элементы все таки перерисовываются, но это не вариант. Есть какой-нибудь вариант реализовать такое перетаскивание?
0
|
|
| 28.07.2011, 16:02 | |
|
Ответы с готовыми решениями:
4
Lable не двигается вместе с курсором при перетаскивании его на Panel На родительской форме расположена panel, при открытие дочерней формы, она прячется под panel Есть ли в WPF полноценная замена GDI+? Чтобы можно было всё, что можно в GDI+? Просто думаю углубляться в работу с изображениями в WPF или GDI. |
|
197 / 189 / 15
Регистрация: 09.02.2011
Сообщений: 457
|
||||||
| 28.07.2011, 18:35 | ||||||
|
А как перетаскиваете? И что переопределяли?
Для начала мне кажется надо перетащить оригинальную панель и если косяка не будет, то косяк явно ваш ))) Попробуйте такой код:
1
|
||||||
|
0 / 0 / 1
Регистрация: 28.07.2011
Сообщений: 5
|
||||||
| 29.07.2011, 10:04 [ТС] | ||||||
|
Потрясающе! Я не знаком с системой Messages, не совсем понимаю как она работает, VB не видел очень давно (делаю на C#), код мне не совсем понятен. перетаскивал по MouseMove ( panel1.Left += cdx; panel1.Top += cdy; ) мой косяк...
следующий код отлично заработал:
Большое спасибо, Bazzy! Но осталась еще одна маленькая подковырочка. PitureBox у меня рисует картинку, которая изменяется со временем, да и есть куча других элементов типа label и т.п., которые тоже постоянно изменяются. В моменты перетаскивания изменений не видно. Он как бы копирует область экрана и начинает таскать bitmap, и отрисовка внутренних элементов panel1 не происходит по-честному. Это в принципе не так и важно, т.к. юзеры не часто что-то перетаскивают, но все же хотелось бы узнать почему так. По этому поводу ничего не могу нагуглить. Наверное, задаю не те вопросы. куда можно покопать?
0
|
||||||
|
197 / 189 / 15
Регистрация: 09.02.2011
Сообщений: 457
|
|
| 29.07.2011, 12:02 | |
|
Хм, странно, может это как-то связано с количеством памяти необходимой для перетаскивания... т.е. просто не хватает выделенной/свободной памяти для выполнения операции(может чушь пишу, но не очень знаю как сей механизм работает)))
Я кинул на форму таймер, панель и на панель лэйбл, таймер на 1000 в тике Label1.text = datetime.now таскаю панель с лэйблом и тот обновляется... А если на Panel_Move повесть sender.refresh() ? может поможет?
0
|
|
|
0 / 0 / 1
Регистрация: 28.07.2011
Сообщений: 5
|
|
| 29.07.2011, 14:13 [ТС] | |
|
пробовал, не помогает. пробовал просто таймер с 1ms с функциями Refresh, Invalidate, Update от имени формы и от панели. тока подтормаживает, но не обновляется. памяти хватает точно (4Gb опреативки, 1Gb видео), дело не в этом. я сам ничего не понимаю, рисовал раньше игры на directx, там все попроще, что сказал ему, то он и рисует каждый кадр.... эх...
Cудя по всему в момент начала перетаскивания он копирует изображения дочерних контролов и при перерисовывании рисует Background у panel1, а вместо контролов подставляет изображения (проверил это через breakPoint'ы). Это странно. Добавлено через 37 минут хотя даже не так. даже таймер не вызывается и элементы не отрисовываются. Немного переделал, посылаю message не от sender'а, а от формы. все получилось просто великолепно. совсем не так, как планировалось, но даже меньше тормозит. спасибо за наводки!
0
|
|
| 29.07.2011, 14:13 | |
|
Помогаю со студенческими работами здесь
5
Не нажимать на кнопку при перетаскивании Подвисание формы при перетаскивании Подтормаживания при перетаскивании ярлыков Помехи при перетаскивании TImage Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|