![]() |
RGB zu Alpha
Kann jemand helfen ?
Mein Versuch..
Delphi-Quellcode:
Das Problem ist einmal funktioniert es dann wieder nicht!
function Rgb2Alpha(colrRGB: Colorref): Byte;
begin if colrRGB <> 0 then Result := LOBYTE(round(colrRGB * 0.2989)) + LOBYTE(round((colrRGB shr 8) * 0.5870)) + LOBYTE(round((colrRGB shr 16) * 0.114)) else Result := 0; end; procedure TSkinEngine.SetupAlphaChannel(DC: HDC); var bm: BITMAP; P: integer; Alpha: byte; pBits: PByte; begin FillChar(bm, sizeof(bm), 0); GetObject(GetCurrentObject(DC, OBJ_BITMAP), sizeof(bm), @bm); pBits := bm.bmBits; for P := 0 to (bm.bmWidth * bm.bmHeight) -1 do begin Alpha := (Rgb2Alpha(RGB(pBits[2], pBits[1], pBits[0])) and $000000FF); if ((Alpha = 0) and (pBits[3] = 0)) then pBits[3] := 0 else if (pBits[3] = 0) then pBits[3] := 255; inc(pBits, 4); end; end; Das erste schlecht das zweite gut. gruss |
AW: RGB zu Alpha
Alpha in Zusammenhang mit RGB ist die Transparenz und die kann man aus dem RGB-Wert nicht berechnen, denn diese wäre eine zusätzliche Angabe.
|
AW: RGB zu Alpha
Zitat:
Kann man doch sehen am Bild ;) gruss |
AW: RGB zu Alpha
Danke ist erledigt habe es gefixt.
1. Pic vorher 2.Pic Aktuell gruss |
AW: RGB zu Alpha
ARGB,
für die, welche die die Lösung nicht mitbekommen haben. |
AW: RGB zu Alpha
Zitat:
ARGB hat damit nichts zu tun.. Wenn ihr die Function richtig interpretieren würdet dann könnt ihr sehen das ich alle von außen sichtbaren Schwarzen Pixel nach Alpha 0 konvertiere.. Also RGB zu Alpha und dafür benötige ich den Alpha wert nicht da ich ihn selbst erstelle. Aber egal ist erledigt. gruss |
AW: RGB zu Alpha
himitsu und Schokohase ihr Ketzer! EWeiss kann Wasser in Wein verwandeln.
|
AW: RGB zu Alpha
Zitat:
|
AW: RGB zu Alpha
Alpha kann auch höchster Wert im RGB Spektrum bedeuten (highbit), bei Pixel x/y. Da ich eh falsch liege in Bezug zu EWeiss hab ichs nicht erwähnt.
|
AW: RGB zu Alpha
Zitat:
Delphi-Quellcode:
Alpha := (Rgb2Alpha(RGB(pBits[2], pBits[1], pBits[0])) and $000000FF);
Aber nochmal es geht darum alle schwarzen Pixel zu entfernen. Also wenn Alpha 0 ist dann wird pBits.rgbReserved auf 0 gesetzt ( := pBits[3]) also komplett durchsichtig. Die Farbe schwarz in dem Fall wird mit dem Alpha Wert 0 ersetzt. andernfalls pBits.rgbReserved := 255 Und deshalb kann ich Wasser in Wein verwandeln. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz