AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmap einfärben

Ein Thema von SittingDuck · begonnen am 8. Mär 2006 · letzter Beitrag vom 12. Mär 2006
Antwort Antwort
SittingDuck

Registriert seit: 11. Jan 2006
Ort: Leverkusen
159 Beiträge
 
Delphi 2010 Professional
 
#1

Bitmap einfärben

  Alt 8. Mär 2006, 10:38
Moin Moin ...

Hier wird meine Schnellstart-Leiste von Euch mächtig vorran getrieben.
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:
 with Bitmap32 do
 for i := 0 to Height * Width - 1 do
 Bits[i] := BlendReg(clAqua, Bits[i]);
 EMMS;
Da kommt Delphi ständig mit einem ERangeError ...
Was mache ich falsch ?

Fehlersuchend, grüßt ...
Ciao ... SittingDuck
iPhone Backup und mehr: iTwin v3.9 Beta ... Alternative Startleiste: Launcher v3.8 !
  Mit Zitat antworten Zitat
XeRo

Registriert seit: 23. Okt 2003
Ort: Warth
461 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Bitmap einfärben

  Alt 8. Mär 2006, 10:55
Delphi-Quellcode:
with Bitmap32 do
begin
 for x := 0 to Height do
  begin
   for y:= 0 to Width do
    begin
     //hier den code
    end;
  end;
end;
keine ahnung obs stimmt.. nur hab ich dein Height*Width nicht verstanden...vielleicht gehts ja so.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: Bitmap einfärben

  Alt 8. Mär 2006, 11:38
Wenn 0-basierend, dann nur bis Pred(Height) und Pred(Width)
  Mit Zitat antworten Zitat
SittingDuck

Registriert seit: 11. Jan 2006
Ort: Leverkusen
159 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Bitmap einfärben

  Alt 8. Mär 2006, 13:03
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:
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;
Soweit alles klar ... Allerding dachte ich, das ich dass über Bits
und BlendReg (beides Befehle der gr32-lib) irgendwie eleganter und
vielleicht auch schneller hinbekäme.

Durch blauen Dunst hindurch, grüßt ...
Ciao ... SittingDuck
iPhone Backup und mehr: iTwin v3.9 Beta ... Alternative Startleiste: Launcher v3.8 !
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: Bitmap einfärben

  Alt 8. Mär 2006, 13:14
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;
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
SittingDuck

Registriert seit: 11. Jan 2006
Ort: Leverkusen
159 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Bitmap einfärben

  Alt 8. Mär 2006, 14:44
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 !

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 ...

Mit dem schnellsten Pinsel, grüßt ...
Ciao ... SittingDuck
iPhone Backup und mehr: iTwin v3.9 Beta ... Alternative Startleiste: Launcher v3.8 !
  Mit Zitat antworten Zitat
SittingDuck

Registriert seit: 11. Jan 2006
Ort: Leverkusen
159 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Bitmap einfärben

  Alt 12. Mär 2006, 17:45
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 ...
Ciao ... SittingDuck
iPhone Backup und mehr: iTwin v3.9 Beta ... Alternative Startleiste: Launcher v3.8 !
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:18 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