CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Dlaczego nie jest przezroczyste ?

Dlaczego nie jest przezroczyste ?

problemy z tworzeniem aplikacji graficznych oraz audio i wideo

Dlaczego nie jest przezroczyste ?

Nowy postprzez Corvis » wtorek, 10 lipca 2012, 14:13

Witam,

w ImageLiście mam takie zdjęcie:

1.png

Jak widać jest ono przezroczyste i teraz chce to wkleić w TImage:
KOD cpp:     UKRYJ  
        Graphics::TBitmap *bmp = new Graphics::TBitmap();
        imglst8Wtryskow->GetBitmap(0, bmp);
        imgWtryskiwacz->Picture->Bitmap->Assign(bmp);
        delete bmp;
 

I nie otrzymuję przezroczystego obrazka :( tylko takie coś z białym tłem:
2.png


Próbowałem ustawiać Transparent na true we wszystkich kombinacjach ale cały czas mam białe tlo wokół obrazka. Może mi ktoś powiedzieć o co chodzi ?

Pozdrawiam,
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome

Re: Dlaczego nie jest przezroczyste ?

Nowy postprzez Cyfrowy Baron » wtorek, 10 lipca 2012, 14:45

To czy w ImageList ustawisz przeźroczystość czy nie, dla TImage nie ma zupełnie znaczenia, gdyż jeżeli w Image ustawisz właściwość Transparent na true, to Image jako kolor przeźroczysty pobierze sobie kolor z lewego dolnego piksela i ten ustawi jako przeźroczysty.

Być może problem tkwi w czymś innym. Na czym leży u Ciebie ten obiekt imgWtryskiwacz?
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Dlaczego nie jest przezroczyste ?

Nowy postprzez Corvis » wtorek, 10 lipca 2012, 14:56

Leży na Panelu. Ale jak wczytam bezpośrednio na image bez użycia imageListy wszystko działa.

A tutaj jest wszystko związane z imgListą:

Lista.png


Zmieniałem DrawingStyle ale to nic nie daje
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome

Re: Dlaczego nie jest przezroczyste ?

Nowy postprzez Mironas » wtorek, 10 lipca 2012, 15:09

imglst8Wtryskow->BkColor = clWhite
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Dlaczego nie jest przezroczyste ?

Nowy postprzez Cyfrowy Baron » wtorek, 10 lipca 2012, 15:49

Czy jak dodajesz do ImageList obrazek to ustawiasz obcinanie - Crop?

Możesz wrzucić ten obrazek do załącznika. Mam pewne podejrzenia.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Dlaczego nie jest przezroczyste ?

Nowy postprzez Corvis » środa, 11 lipca 2012, 09:20

Baronie ustawiłem w ImageList BkColor na clRed i zadziałało :\ nie wiem tylko dlaczego ...

Obrazek jest http://img832.imageshack.us/img832/9770/36114421.png bo bmp na forum nie można wrzucić.
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome

Re: Dlaczego nie jest przezroczyste ?

Nowy postprzez Mironas » środa, 11 lipca 2012, 10:11

Corvis napisał(a):Obrazek jest http://img832.imageshack.us/img832/9770/36114421.png bo bmp na forum nie można wrzucić.


Ten obrazek nie ma przeźroczystego tła.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Dlaczego nie jest przezroczyste ?

Nowy postprzez Corvis » środa, 11 lipca 2012, 10:13

Ale to nic nie wnosi w temat. Bo jak go wrzucisz bezpośrednio na TImage i ustawisz Transparent na true to działa.
A jak wrzucasz go za pośrednictwem TImageList i ustawisz Transparent na true to nie działa.

Tutaj coś się dzieje na poziomie dodawania obrazka do TImageList-y.
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome

Re: Dlaczego nie jest przezroczyste ?

Nowy postprzez Cyfrowy Baron » środa, 11 lipca 2012, 10:14

Nie wiem co u Ciebie jest nie tak. U mnie działa to z takimi ustawieniami jak podałeś prawidłowo, a to czy BkColor ustawię na clRed czy clNone niczego nie zmienia. Może przyczyna tkwi w systemie.
Umieściłem w załączniku prosty program wykorzystujący Twój pierwotny kod, czyli z BkColor = clNone. Gdybyś mógł sprawdzić jak to działa u Ciebie. Program powstał dokładnie w tym samym środowisku co Twoje, czyli BCB XE2 Upd 4.

Co się zaś tyczy samego przenoszenia zawartości ImageList do Image, to nie musi w tym pośredniczyć obiekt typu TBitmap, możesz wszak to od razu przenieść:

KOD cpp:     UKRYJ  
 ImageList1->GetBitmap( 0, Image1->Picture->Bitmap );
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Corvis
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Dlaczego nie jest przezroczyste ?

Nowy postprzez Corvis » środa, 11 lipca 2012, 10:42

Działa dobrze :)

Czyli problem jest gdzieś w użyciu pośrednika Graphics::TBitmap *bmp = new Graphics::TBitmap();

Dzięki !!
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome

Re: Dlaczego nie jest przezroczyste ?

Nowy postprzez Cyfrowy Baron » środa, 11 lipca 2012, 11:17

Corvis napisał(a):Czyli problem jest gdzieś w użyciu pośrednika Graphics::TBitmap *bmp = new Graphics::TBitmap();


Raczej nie, gdyż ja użyłem tego pośrednika, a mimo to u mnie program działał zgodnie z założeniami. No chyba, że inaczej używasz obiektu TBitmap niż w przytoczonym tutaj przez Ciebie przykładzie.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Dlaczego nie jest przezroczyste ?

Nowy postprzez Corvis » środa, 11 lipca 2012, 11:57

Identycznie
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome

Re: Dlaczego nie jest przezroczyste ?

Nowy postprzez Cyfrowy Baron » środa, 11 lipca 2012, 12:31

Sprawdź ten pierwotny kod z bitmapą a nie plikiem PNG. Przyczyna prawdopodobnie tkwi w bibliotekach, z których korzysta środowisko. Ja mam zainstalowany pakiet komponentów LMD, który dodaje własne biblioteki do obsługi plików w formacie PNG (innych też), zastępując te środowiskowe.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje multimedialne, graficzne

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 3 gości