![]() |
Bitmap einfärben
Moin Moin ...
![]() Jetzt möchte ich so genannte Color Themes integrieren um damit die Hintergrund-Grafiken leicht einzufärben. Ich benutze die gr32-lib. So gehts nicht:
Delphi-Quellcode:
Da kommt Delphi ständig mit einem ERangeError ...
with Bitmap32 do
for i := 0 to Height * Width - 1 do Bits[i] := BlendReg(clAqua, Bits[i]); EMMS; Was mache ich falsch ? Fehlersuchend, grüßt ... |
Re: Bitmap einfärben
Delphi-Quellcode:
keine ahnung obs stimmt.. nur hab ich dein Height*Width nicht verstanden...vielleicht gehts ja so. :gruebel:
with Bitmap32 do
begin for x := 0 to Height do begin for y:= 0 to Width do begin //hier den code end; end; end; |
Re: Bitmap einfärben
Wenn 0-basierend, dann nur bis Pred(Height) und Pred(Width)
|
Re: Bitmap einfärben
Tach nochmal ...
Danke erstmal für die Antworten. So färbe ich konventionell eine Bitmap (oder Bitmap32) wie in diesem Beispiel leicht Blau ein.
Delphi-Quellcode:
Soweit alles klar ... Allerding dachte ich, das ich dass über Bits
var x,y,r,g,b: integer; TC: TColor32;
with Bitmap32 do begin for x := 0 to Width - 1 do for y := 0 to Height - 1 do begin TC :=Pixel[x,y]; R := RedComponent (TC); G := GreenComponent(TC); B := BlueComponent (TC); B := (B + 255) div 2; Pixel[x,y] := Color32(R,G,B); end; end; und BlendReg (beides Befehle der gr32-lib) irgendwie eleganter und vielleicht auch schneller hinbekäme. Durch blauen Dunst hindurch, grüßt ... |
Re: Bitmap einfärben
Dein Code ist vollkommen richtig, du solltest nur die Bereichsprüfung ausschalten (am besten nur lokal per Compilerswitch).
Aber dein zweiter Code ist ziemlich ineffektiv, diesen solltest du als erstes verbessern, bevor du Pixel durch Bits ersetzt.
Delphi-Quellcode:
for i := 0 to Width * Height - 1 do
begin B := (Bits[i] and $FF + $FF) shr 1; Bits[i] := Bits[i] and $FFFFFF00 or B; end; |
Re: Bitmap einfärben
Hallo ...
@Khabarakh: Danke für Deine Hilfe ... Ja sorry, aber meine Routine entstand aus purer Verzeifelung nachdem ich Stunden lang das Internet durchforstet hatte ... frei nach dem Motto: 'Hauptsache läuft ...' So ein 'leicht provokant' geschriebener Sourcecode' holt die wahren Talente auf die Bühne ... Hut ab vor Deinem Können ! :thumb: Am liebsten würde ich Dir den gesamten Launcher-Quelltext mal eben zum 'drübergucken' zuschicken, aber ich habe Angst, das ich dann nur noch 50 hochoptimierte Zeilen wiederbekomme ... :lol: Mit dem schnellsten Pinsel, grüßt ... |
Re: Bitmap einfärben
Tach auch ...
Ich muss dieses Thema doch nochmal nach oben holen, nachdem ich immer noch nicht den gewünschten Effekt hinbekomme. Ich habe zwei TBitmap32. Das eine ist die Oberfläche von meinem Programm (der Launcher), das andere TBitmap32 hat die selbe Größe und beinhaltet einen Farbverlauf. Nun möchte ich das meine Program- oberfläche eingefärbt wird, mit der Farbinformation des zweiten TBitmap32. Die gr32-lib stellt entsprechende Befehle zur Verfügung. (Combine bzw. CombineMode etc.) Irgendwie tut sich bei mir aber nix. Meine Launcher-Oberfläche ist unverändert. Vielleicht habe die gr32-Spezialisten mal ein paar Code-Zeilen parat, aus denen ich sehen kann wie es gemacht wird. Lernbereit, grüßt ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:06 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