AGB  ·  Datenschutz  ·  Impressum  







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

Farben ersetzen

Ein Thema von Jarmen_Kell · begonnen am 19. Mär 2005 · letzter Beitrag vom 25. Feb 2006
Antwort Antwort
Seite 2 von 3     12 3      
Jarmen_Kell

Registriert seit: 17. Mär 2005
188 Beiträge
 
#11

Re: Farben ersetzen

  Alt 21. Mär 2005, 20:37
Warum sollte ich das nicht tun?

Und: wie geht das ScanLine dann?
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#12

Re: Farben ersetzen

  Alt 21. Mär 2005, 22:25
Webb du auf ein Image direkt zeichnest kann es zu fehlern kommen. Für sowas ist die Paintbox gedacht.

Hab dir hier mal ein kleines Beispiel gemacht. Zuerst wird ein Bitmap erzeugt und drauf gezeichnet. Als nächstes wird mit Scanline und zwei Schleifen jedes Pixel geprüft und wenns Blau ist in Rot geändert.
Angehängte Dateien
Dateityp: zip colorchange_131.zip (1,6 KB, 54x aufgerufen)
  Mit Zitat antworten Zitat
Jarmen_Kell

Registriert seit: 17. Mär 2005
188 Beiträge
 
#13

Re: Farben ersetzen

  Alt 22. Mär 2005, 11:16
ok, muss ich dann das ganze hier ( Anhang ) umschreiben?

evtl TImage mit TPaintbox ersetzen?!?

Und geht das dann auch noch alles?

Anhang:
|~|
paeint.zip
Angehängte Dateien
Dateityp: zip paeint_178.zip (32,2 KB, 25x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#14

Re: Farben ersetzen

  Alt 22. Mär 2005, 12:25
Ich würde das TImage wegmachen und alle Operationen (Zeichnen, Laden, speichern...) auf ein TBitmap anwenden. (Ich glaube für das Undo nutzt du auch ein Image, dafür kannst du sowieso ein TBitmap nutzen). Dann kannst du das TBitmap per BitBlt auf deine Form blitten, musst nur nach jeder Zeichenoperation das onPaint der Form, oder PaintBox aufrufen. Ich habe nochmal ein Beispiel gemacht.
Angehängte Dateien
Dateityp: zip minipaint_895.zip (2,0 KB, 30x aufgerufen)
  Mit Zitat antworten Zitat
Jarmen_Kell

Registriert seit: 17. Mär 2005
188 Beiträge
 
#15

Re: Farben ersetzen

  Alt 22. Mär 2005, 13:06
Also doch mehr oder weniger alles umschreiben ..
naja dann fang' ich mal an ^^

( aber ich bin mir sicher, dass ich demnächst wieder was davon fragen werde )

Danke schon mal !
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#16

Re: Farben ersetzen

  Alt 11. Feb 2006, 20:12
Hallo,

Bei mir funktioniert der Quellcode nicht.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  x,y: integer;
  fLine: PRGBQuad;
begin
  for y := 0 to Grafik.Height - 1 do
  begin
    fLine := Grafik.ScanLine[y];
    for x := 0 to Grafik.Width - 1 do
    begin
      if (fLine.rgbBlue = 255) and (fLine.rgbGreen = 255) and (fLine.rgbRed = 255) then
      begin
        fLine^.rgbBlue := 0;
        fLine^.rgbGreen := 0;
        fLine^.rgbRed := 255;
      end;
    Inc(fLine);
    end;
  end;

  FormPaint(NIL);
end;
Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
begin
  BitBlt(pbox.Canvas.Handle, 0, 0, Grafik.Width, Grafik.Height, Grafik.Canvas.Handle, 0, 0, SrcCopy);
end;
und im oncreat steht

Delphi-Quellcode:
  with grafik do
  begin
    Height:=200;
    Width:=200;
    canvas.pen.color:=clwhite;
    canvas.brush.color:=clwhite;
    canvas.Rectangle(0,0,200,200);
  end;

wobei grafik: TBitmap; ist.

Ich will das die Weiße Fläche die Farbe Rot animmt.
Die Schleife wird ausgeführt, nur es ändert sich nichts.

Warum?
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#17

Re: Farben ersetzen

  Alt 12. Feb 2006, 01:44
Hast du das Pixelformat von "grafik" auf 32Bit gesetzt, nach dem Create?
grafik.PixelFormat := pf32Bit;
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#18

Re: Farben ersetzen

  Alt 12. Feb 2006, 09:37
Hallo,

Nein habe ich nicht,
danke funktioniert jetzt alles,

was heißt diese Zeile?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

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

Re: Farben ersetzen

  Alt 12. Feb 2006, 09:57
Nun ja, das Pixelformat wird eben auf 32 Bit (ARGB) gesetzt . Da in der Prozedur tagRGBQUAD, also 4 Byte pro Pixel, benutzt wird, muss das Bitmap auch genau dieses Format haben.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#20

Re: Farben ersetzen

  Alt 21. Feb 2006, 18:49
Hallo,

ich möchte die Prozedur so umschreiben das ich statt den drei RGB Werten einen Integer Wert bekomme.
Jede Farbe hat in Delphi seinen eigenen Integer Wert, wie bekomme ich den aus den RGB Werten?


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  x,y: integer;
  fLine: PRGBQuad;
begin
  for y := 0 to Grafik.Height - 1 do
  begin
    fLine := Grafik.ScanLine[y];
    for x := 0 to Grafik.Width - 1 do
    begin
      if (fLine.rgbBlue = 255) and (fLine.rgbGreen = 255) and (fLine.rgbRed = 255) then
      begin
        fLine^.rgbBlue := 0;
        fLine^.rgbGreen := 0;
        fLine^.rgbRed := 255;
      end;
    Inc(fLine);
    end;
  end;
end;

wie bekomme ich daraus:

Delphi-Quellcode:
        fLine.rgbBlue := 0;
        fLine.rgbGreen := 0;
        fLine.rgbRed := 255;
einen einzigen Integer Wert???
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 02:48 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