Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Problem z obrazkami i przezroczystością
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002
Problem z obrazkami i przezroczystością

Witam!

Od razu zaznaczam, że nie biorę udziału w konkursie .

Chciałem zrobić grę w której potrzebuję kulek. Ma to być graficznie coś podobnego do http://www.marbit.com.pl/kulki.htm . Reguły jednak będą zupełnie inne. Mój kłopot polega na tym, że chciałbym, aby użytkownik miał możliwość zmiany tła. Jednak na tym tle będą wyświetlać się owe kulki z określonym tłem. Moje pytanie brzmi: co mam zrobić, żeby tego tła nie było widać? (było przezroczyste). Podpatrzyłem budowę gry Marbitu (adres powyżej) i zauważyłem w katalogu programu plik *.bmp z kulkami - to właśnie bezpośrednio z niego gra pobiera wygląd kulek. Drugie pytanie brzmi na czym to polega i jak zrobić takie coś w VB!?

Z góry dziękuję za pomoc.


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


28-08-2004 15:10
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
kicaj




Typ: neutral
Postów: 271
Zarejestrowany: Aug 2003

Sa cztery mozliwosci robienia przezroczystych obrazkow:
1. Uzycie Image i przezroczystych gifow
2. kolorwanie pixeli o danym kolorze na kolor tla ( [url=http://www.coderscity.pl/no-vb4all/workshop/trans.zip]http://www.coderscity.pl/no-vb4all/workshop/trans.zip Mozna ulepszyc te funkcje o API
3. Uzycie BitBlt i masek, bardzo fajne i szybkie
4. Uzycie TransparentBlt (jakos tak sie nazywalo) wkleja Ci obraze baz koloru podanego w parametrze

masz tu jej deklaracje:
Private Declare Function TransparentBlt Lib "msimg32.dll" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal crTransparent As Long) As Boolean
uzywa sie jej tak samo jak BitBlt ostatni parametr to kolor maski

28-08-2004 16:13
Pokaż profil kicaj  Wyślij email do kicaj        3914568
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

5. Użycie ImageList. Jako .MaskColor Podajesz kolor, który ma byc przezroczysty. Następnie pobierasz z ImageList obrazki (tak jak normalnie), tyle, że metodą .ExtractIcon. To zwraca obraz z efektem przezroczystości, który potem można użyć np. do PaintPicture.

Sposobu (2) nie polecam pod VB... niestety, jest zbyt powolny

[Post edytowany dnia 28-08-2004 17:43 przez marcin_an]


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

28-08-2004 17:40
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Dziękuję Wam bardzo. Ponieważ moje obrazki są statyczne wykorzystałem sposób nr 1 . Pozdrawiam.


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


30-08-2004 17:05
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
kicaj




Typ: neutral
Postów: 271
Zarejestrowany: Aug 2003

Osobiscie proponowal bym Ci uzycie sposobu numer 4, poniewaz:
1) przyspieszasz dzialanie programu bo nie ladujesz kontrolek image , jedynie to conajwyzej dwa PictureBoxy
2) jak bedziesz chcial sie kiedys przerzycic na DirectX bedzie latwiej
3) a trzecie primo... to nie wiem co napisac

30-08-2004 23:25
Pokaż profil kicaj  Wyślij email do kicaj        3914568
bisiek




Typ: neutral
Postów: 487
Zarejestrowany: Jul 2003

Raczej użyj sposobu 3, a nie 4, bo TransparentBlt zżera pamięć, a BitBlt nie.


_____________________________________________
www.mob.abc.pl - moja strona o VB

30-08-2004 23:27
Pokaż profil bisiek  Wyślij email do bisiek   Odwiedź stronę bisiek       3380672
kicaj




Typ: neutral
Postów: 271
Zarejestrowany: Aug 2003

Ale jesli chlopak nie bawil sie nigdy z maskami to ma problem, a pozatym do zrobienia przezroczystosci za uzyciem BitBlt trzeba wywolac ja dwa razy, i miec gotowa maske :-)

30-08-2004 23:32
Pokaż profil kicaj  Wyślij email do kicaj        3914568
bisiek




Typ: neutral
Postów: 487
Zarejestrowany: Jul 2003

Maskę dla klulki nie jest trudno zrobić, a przykłady z użyciem BitBlt są np. na vbtools. Zresztą - po to jest forum, żeby pytać


_____________________________________________
www.mob.abc.pl - moja strona o VB

31-08-2004 10:24
Pokaż profil bisiek  Wyślij email do bisiek   Odwiedź stronę bisiek       3380672
Wszystkich odpowiedzi: 7 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1