AGB  ·  Datenschutz  ·  Impressum  







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

TBitmap färben

Ein Thema von Florian H · begonnen am 18. Okt 2003 · letzter Beitrag vom 18. Okt 2003
Antwort Antwort
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#1

TBitmap färben

  Alt 18. Okt 2003, 09:58
Hallo,

für eine Skinfunktion eines meiner Programme hatte ich folgende Idee:
Um das Programm, bzw. den Skin belieibig färben zu können, nehme ich Schwarz-Weiß-Bitmaps für die Controls die ich als Bilder habe und färbe die dann entsprechend ein.
Der User wählt dann einen Farbton und entsprechend werden dann Pixel für Pixel des Bildes, je nach Grauwert, gefärbt.

Aber das will mir irgendwie nicht so recht gelingen!
Ich habe folgendes probiert:
Delphi-Quellcode:
      PixelColor := RGB(round(r*(getRValue(PixelColor) / 255)),
                        round(g*(getRValue(PixelColor) / 255)),
                        round(b*(getRValue(PixelColor) / 255)));
Dabei ist PixelColor die Farbe des S/W-Pixels des Skins und r,g und b sind die aufgeteilten RGB-Werte der Farbe, mit der gefärbt werden soll.

Wenn ich das so mache, funktioniert das aber nicht so richtig, ich kann partout nicht mit einem blauton färben und auch sonst ist die Farbdarstellung nicht richtig...

Gibt es da noch eine gute Möglichkeit?
Wenn einer was mit HLS hat, bitte mit Code, daran bin ich nämlich auch gescheitert...


Viele Grüße
Florian
Florian Heft
  Mit Zitat antworten Zitat
axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#2

Re: TBitmap färben

  Alt 18. Okt 2003, 10:01
Hmm, sind Farbcodes in Delphi nicht so aufgebaut: $ Blau Grün Rot ?
Vielleicht probierst du das einfach mal aus!
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#3

Re: TBitmap färben

  Alt 18. Okt 2003, 10:03
Danke erstmal für die (schier unglaublich) schnelle Antwort, aber....
wenn ich die Codes mit GetRValue(<farbwert>); etc. raushole und entsprechend wieder mit RGB(...); zusammensetzte, sollte das eigentlich schon stimmen...
Florian Heft
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#4

Re: TBitmap färben

  Alt 18. Okt 2003, 10:20
Oh mann sorry, hat sich erledigt...
ich hatte wo anders nen fehler drin...
Florian Heft
  Mit Zitat antworten Zitat
UweG.

Registriert seit: 15. Okt 2003
Ort: Ruhrgebiet
15 Beiträge
 
Delphi 2 Developer
 
#5

Re: TBitmap färben

  Alt 18. Okt 2003, 10:39
Hallo Florian,

zur Bewertung der einzelnen Farbkomponenten gibt es die Funktionen

PC := RGB(round(255*(getRValue(PC) / 255)),
round(255*(getGValue(PC) / 255)),
round(255*(getBValue(PC) / 255)));

damit sollte es eigentlich gehen.

MfG. Uwe
MfG. Uwe

Nichts hält länger, als ein gutes Provisorium !
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#6

Re: TBitmap färben

  Alt 18. Okt 2003, 10:44
Ja, ich hatte halt ein Graustufenbild, da ist ja R, G und B eh gleich...
Für die die auch so ein Problem haben wie ich hier mal meine Lösung:

Delphi-Quellcode:
procedure TForm5.Faerben(bmpFile : string; color: TColor);
var
  x,y, pixelColor,r,g,b : integer;
  bmp : TBitmap;
begin

  bmp := Tbitmap.Create;
  bmp.LoadFromFile(bmpFile);

  r := GetRValue(color);
  g := GetGValue(color);
  b := GetBValue(color);

  for x:=0 to BMP.Width do
  begin
    for y:=0 to BMP.Height do
    begin
      pixelColor := BMP.Canvas.Pixels[x,y];

      PixelColor := RGB(round(r*(getRValue(PixelColor) / 255)),
                        round(g*(getGValue(PixelColor) / 255)),
                        round(b*(getBValue(PixelColor) / 255)));
      BMP.Canvas.Pixels[x,y] := PixelColor;
    end;
  end;
  bmp.SaveToFile(bmpFile);
  BMP.Free;
end;
Florian Heft
  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 16:41 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