Maska przeźroczystości formy...

problemy z tworzeniem aplikacji graficznych oraz audio i wideo

Maska przeźroczystości formy...

Nowy postprzez lidamian » niedziela, 4 stycznia 2009, 18:34

Chciałbym wyświetlić obraz PNG na fromie z użyciem przeźroczystości. Wiem jak to zrobić kiedy niewidoczny ma być 1 kolor. Chciałbym jednak, aby wyświetlana grafika nie miała takich "poszarpanych" brzegów. Aby to osiągnąć potrzebna jest maska przeźroczystości (dodatkowa bitmapa w skali szarości, która zależnie od nasycenia czernią lub bielą bardziej lub mniej "prześwituje"). Tylko jak takie coś zrealizować? Jakieś komponenty?
Avatar użytkownika
lidamian
Bladawiec
Bladawiec
 
Posty: 29
Dołączył(a): piątek, 19 września 2008, 15:25
PodziÄ™kowaÅ‚ : 4
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Maska przeźroczystości formy...

Nowy postprzez Cyfrowy Baron » poniedziaÅ‚ek, 5 stycznia 2009, 18:35

ZajmujÄ™ siÄ™ trochÄ™ grafikÄ… i z tego co wiem to "poszarpane brzegi" likwiduje siÄ™ za pomocÄ… efektu rozmycia.
Jeżeli do wczytania grafiki użyjesz GDI+ to nie będziesz miał problemu z rozmyciem ostrych krawędzi i nie będziesz musiał stosować żadnych masek:

Przykład aplikacji wyświetlającej na formularzu grafikę w formacie PNG z zachowaniem przeźroczystości i z wykorzystaniem efektu rozmycia.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
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
    NieznanyNieznana

Re: Maska przeźroczystości formy...

Nowy postprzez lidamian » poniedziaÅ‚ek, 5 stycznia 2009, 20:42

Wielkie dzięki za aż taką pomoc :)
A co jeżeli chciałbym aby tylko PNG był widoczny (z zachowaniem tych rozmytych brzegów) a cała forma nie?
Bo kiedy w kodzie dodam to:
Kod: Zaznacz cały
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{
...
Color = TColor(0x12345678); // Kolor tła formy
TransparentColorValue = TColor(0x12345678); // Kolor tła formy który ma być przeźroczysty
TransparentColor = true;
...
}

To wychodzi takie coÅ›:
Obrazek
A chciałbym, aby brzegi tego PNG płynnie zanikały (na cieniu). Potrafiłbyś coś takiego osiągnąć?
Avatar użytkownika
lidamian
Bladawiec
Bladawiec
 
Posty: 29
Dołączył(a): piątek, 19 września 2008, 15:25
PodziÄ™kowaÅ‚ : 4
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Maska przeźroczystości formy...

Nowy postprzez Cyfrowy Baron » wtorek, 6 stycznia 2009, 10:04

Niestety Windows XP czegoś takiego nie potrafi. To możliwe jest do realizacji tylko w Vista.

Spójrz na ten róg okna w powiększeniu, widać schodki, gdyż Windows XP obsługuje tylko kanał Alfa nie obsługuje dodatkowych masek.

okno.jpg
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
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
    NieznanyNieznana


  • 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 2 gości