AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Graphics32 und Aplhatransparenz

Graphics32 und Aplhatransparenz

Ein Thema von richard_boderich · begonnen am 22. Jul 2005 · letzter Beitrag vom 27. Feb 2006
Antwort Antwort
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#1

Graphics32 und Aplhatransparenz

  Alt 22. Jul 2005, 12:19
moin leutz,

kann mir mal jemand sagen , wie ich dort genau eine alphatrasparenz erzeuge.
Ich kann zwar ein image laden und wenn ich das gleiche image nochmal unter aplhachannel lade bekomm ich es auch angezeigt, aber
ich finde nirgendwo etwas zum einstellen der aphatranparenz?

Gruß Richard


// hat sich erledigt
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#2

Re: Graphics32 und Aplhatransparenz

  Alt 22. Jul 2005, 12:36
AlphaToIntensity()
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Graphics32 und Aplhatransparenz

  Alt 22. Jul 2005, 17:33
Es kommt darauf an welches Alpha du meinst. Die G32 kennt nämlich 2 Werte dafür:

1) Den Per-Pixel-Alpha der für jeden Farbwert zusätzlich im höchstwertigen Byte von TColor32 hinterlegt wird
2) Den Master-Alpha - ein Byte dass für das gesamte TBitmap32 gilt

(1) lässt sich entweder durch direktes Zuweisen per Pixel manipulieren, oder mit IntensityToAlpha(). D.h. du hast z.B. ein .bmp mit deinem Bild, und ein zugehöriges s/w-bmp dass den Alphakanal beschreibt. Dann läsdst du als erstes dein bmp in ein TBitmap32, und dein Alpha-Bild in ein zweites. Dieses machst du nun per IntensityToAlpha() zum Alphachannel des ersten (und kannst das TBitmap32 für das Alpha dann auch wieder freigeben).

Damit du aber überhaupt was davon merkst, musst du TBitmap32.DrawMode auf dmBlend setzen! Standard ist dmOpaque, bei dem Alpha komplett ignoriert wird. Wenn du nun also ein TBitmap32 via Draw oder DrawTo zeichnest, dann wird dein Alpha berücksichtigt. Was aber nicht geht ist, dass andere Controls o.ä. durchscheinen. Das wirkt imho nur beim Zeichnen von TBitmap32 auf TBitmap32 (bin mir jedoch auf einmal nicht mehr 100%ig sicher ).

Für (2) einfach TBitmap32.MasterAlpha auf einen Wert 0..255 setzen. Hier gilt alles obige mit, und dieser Wert wird imho mit den per-pixel Werten verrechnet. (Ich habe jeoch bisher nie MasterAlpha und Pixel-Alpha in Kombination eingesetzt. Müsste aber einfach so klappen.) Der DrawMode hat auch hier Auswirkungen.



Das Alpha-Bild muss allerdings nicht zwangsläufig s/w sein. Es geht jedes, wobei die einzelnen Farbwerte zu einer Intensität verrechnet werden (also in s/w umgewandelt). Dabei wäre darauf zu achten, dass es sein kann dass die G32 da "richtig" vorgeht, also 255er Grün weitaus intensiver wertet als 255er Blau, da es dem Menschen ja heller erscheint. Somit ist man wenn man von vorne herein s/w-Bilder verwendet auf der sicheren Seite.
Das Laden, da über 2 TBitmaps32, ist etwas umständlich, aber es gibt imho keine Funktion Formate zu laden die den Alpha integriert haben (.png z.B.). Man könnte sich aber spaßeshalbar ein TBitmap32 ableiten oder ne Funktion schreiben der man einfach beide Filenames übergibt, und den Kleinkram zentral erledigt (wenn man öfter sowas zu laden hat).


Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Riese

Registriert seit: 17. Nov 2005
16 Beiträge
 
Delphi 5 Standard
 
#4

Re: Graphics32 und Aplhatransparenz

  Alt 27. Feb 2006, 11:32
Also ich habe es jetzt geschafft mittels AlphaToIntensity so ein Bild zu erstellen. Würde dies jetzt gerne speichern.
Image.Bitmap.SaveToFile () speichert nur das Originalbild.
Komme ich auch irgendwie auf das konvertierte Bild?

Gruß
Riese
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Graphics32 und Aplhatransparenz

  Alt 27. Feb 2006, 11:36
die allgemeingültigste Variante wäre es direkt von der Canvas abzugreifen, also eine Art Screenshot.
Wenn TImage32 von TWinControl abgeleitet ist kannst du auch die Methoden "PaintTo" verwenden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz