![]() |
ARGB nach Interger
Wie ist die Formel um einen ARGB wert nach Interger zu konvertieren ?
Delphi-Quellcode:
von turboPASCAL
function RGB(R,G,B: Byte): Cardinal;
begin Result := $00000000 shl 24 or B shl 16 or G shl 8 or R; end; brauche das gleiche für ARGB .. Beispiel : "255,250,250,255" Hab das hier gefunden aber wo ist hier der A wert ? Zitat:
|
Re: ARGB nach Interger
Alpha wird um 24 geshiftet, also einfach in deinem oberen Code statt
Delphi-Quellcode:
$00000000 shl 24
Delphi-Quellcode:
schreiben.
A shl 24
Dust Signs |
Re: ARGB nach Interger
Zitat:
Habs mal versucht stimmt der wert ? 255,255,255,255 := -1 ? als ARGB Gruss Emil |
Re: ARGB nach Interger
Delphi-Quellcode:
function ARGB(A, R, G, B: Byte): COLORREF; // COLORREF = DWORD = Cardinal;
begin Result := B or (G shl 8) or (R shl 16) or (A shl 24); end; |
Re: ARGB nach Interger
Zitat:
hatte seltsame werte bei 255,250,250,255 := -1281 gruss Emil |
Re: ARGB nach Interger
Klar, weil ja ein Bit für's Vorzeichen reserviert war. Dadurch sind alle Werte größer binär 01111111111111111111111111111111 (31 1-Bits). Bei einem Überlauf werden die 32 Bit als 2er-Komplement interpretiert (wegen dem gesetzten Vorzeichenbit) - und damit als negative Zahl. Wie bereits von turboPASCAL erwähnt schafft der Wechsel auf einen vorzeichenenlosen Typen Abhilfe, da dieser kein Vorzeichenbit hat und damit auch dieses Bit zur Größe des Wertebereichs beiträgt.
Dust Signs |
Re: ARGB nach Interger
Zitat:
gruss Emil |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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 by Thomas Breitkreuz