Проблемы с Image и прозрачностью...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Nikolka
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 174
Зарегистрирован: 01.01.2004 (Чт) 2:06

Проблемы с Image и прозрачностью...

Сообщение Nikolka » 04.11.2004 (Чт) 11:23

Немогу никак сделать: Image при прозрачном фоне некой картинки, при передвижении, или вообще при каком либо действии моргает синим... Вот не могу понять в чём проблема или можно-ли что-либо использовать вместо Image (но обязательно, чтобы была прозрачность). Есть варианты, но очень громоздкие по вычислениям: перерисовывать через PaintPicture или сделать отдельную форму и обрезать её по рисунку...

Но всё это очень громоздко. Никто не знает, почему простой Image так глючит?

Nikolka
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 174
Зарегистрирован: 01.01.2004 (Чт) 2:06

Сообщение Nikolka » 06.11.2004 (Сб) 14:42

Похоже никто...

Вот на форуме VBRussian получил ответ, буду пробовать:

"
Попробуй вот так. В заголовке описания формы помести:
Declare Function LockWindowUpdate Lib "user32" Alias "LockWindowUpdate" (ByVal hwndLock As Long) As Long

а в коде:
ask=LockWindowUpdate(Image1.hwnd)
.... движение в Image ...
ask=LockWindowUpdate(0&)
Image1.Refresh - по идее должно помочь даже без этой последней строки
"

(может кому пригодится)

Mleha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 146
Зарегистрирован: 06.10.2004 (Ср) 7:49
Откуда: Ангарск

Сообщение Mleha » 06.11.2004 (Сб) 14:52

Скинь исходник может что подправим...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.11.2004 (Сб) 15:50

Почему глючит, почему глючит... Прозрачно рисует, вот и глючит :)
Кстати, помнится, image от MSForms двигается без дёрганий...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 06.11.2004 (Сб) 16:01

почему простой Image так глючит

Во-первых, как уже сказал GSerg, рисование идет на прозрачном фоне.
Во-вторых, оно осуществляется со скоростью сопоставимой с частотой мерцания твоего монитора.
В-третьих, почему такая скорость? да потому, что рисование идет напрямую на твоей форме. Ведь Image есть ни что иное, как элемент, не имеющий собственного окна.

Как говорится, есть 3 вида рисования изображений: хороший, плохой и без мерцания. Чтобы уменьшить мерцание попробуй увеличить интервал прорисовки или воспользуйся PictureBox'ом. Да, непрозрачно, да, медленнее, но зато без мерцания :P
Моду создают модоки, а распространяют модозвоны.

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 06.11.2004 (Сб) 16:04

Кстати, можно попробовать BitBlt и TransparentBlt API вместо элемента Image.

Пример прилагается:
Вложения
AnimBitBlt.zip
BitBlt + анимация
(53.84 Кб) Скачиваний: 29
Моду создают модоки, а распространяют модозвоны.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 5

    TopList  
cron