Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Farbcodes (https://www.delphipraxis.net/10908-farbcodes.html)

Sanchez 29. Okt 2003 19:27

Re: Farbcodes
 
Zitat:

Zitat von F.W.
Gut, also der Zugriff über Pixels ist zu langsam. Was könnte ich dann benutzen?

die Antwort hast du schon bekommen

Zitat:

Zitat von Sakura
Wie Luckie schon meinte, daß, was lange dauert ist der Zugriff über Pixels. Suche mal nach Hier im Forum suchenSCANLINE


F.W. 29. Okt 2003 21:11

Re: Farbcodes
 
Ok, habe es auf ScanLine "umgebaut".

Aber wie kann ich jetzt den Farbcode in beispielsweise einem TMemo ausgeben?

Sanchez 29. Okt 2003 21:17

Re: Farbcodes
 
Wie sieht den dein Code jetzt aus?

F.W. 29. Okt 2003 21:36

Re: Farbcodes
 
So:
Delphi-Quellcode:
var
 X, Y: Integer;
 P: PByteArray;
begin
 PBar1.Max := Image1.Width-1;
 PBar2.Max := Image1.Height-110;
 for Y := 0 to Image1.Height-110 do begin
     PBar2.Position := Y;
     P := Image1.Picture.Bitmap.ScanLine[Y];
     for X := 0 to Image1.Width-1 do begin
         PBar1.Position := X;
         Memo1.Text := Memo1.Text+'W'+IntToStr(P[X]);
     end;
 end;
end;
Habe das jetzt schon probiert, geht aber immernoch sehr langsam, kann man da garnichts machen?

[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]

F.W. 30. Okt 2003 10:42

Re: Farbcodes
 
Wenn ich das so mache, mit ScanLine, wie kann ich nachher von den höchstens 3-stelligen Zahlen wieder ein farbiges Pixel machen?

Danke, Danke!

Sanchez 30. Okt 2003 10:51

Re: Farbcodes
 
hi,
Du hast die Scanlines nicht richtig verwendet. Schau dir mal in diesem Thread Grayscale meinen Beitrag an. Der zeigt relativ einfach wie man mit Scnalines umgeht.

grüße, daniel

F.W. 30. Okt 2003 11:11

Re: Farbcodes
 
Ich habe jetzt was schnelles gedunden:
Delphi-Quellcode:
 for Y := 0 to Image1.Height-1 do
     ListBox1.Items.Add('');
 G.MaxValue := Image1.Height-1;
 for Y := 0 to Image1.Height-1 do begin
     G.Progress := Y;
     S := '';
     for X := 0 to Image1.Width-1 do begin
         Insert('|'+ColorToString(Image1.Canvas.Pixels[X, Y]), S, Length(S)-1);
     end;
     ListBox1.Items[Y] := S;
 end;
G ist eine Gauge, damit ich weiß, wo er gerade steckt.
Das ganze hat einen großen Nachteil: ich kann damit nur BITMAPS "konvertieren".

Wie könnte ich es am geschicktesten anstellen, auch JPGS rein zu bringen.

Danke Sanchez, aber das mit ScanLine ist ganzschön schwierig, wobei ich ja Anfänger bin und mich mit Arrays noch nicht richtig beschäftigt habe, und mit Byytes und Pointern erst recht nicht!

Eine Frage noch:
Wie kann ich das ganze schnell und zuverlässig wieder umwandeln, denn sobald mal ein richtiges rot dabei ist, würde es ja clred heißen, und schon wäre es micht mehr genau 9 bzw. mit Trenner 10 Zeichen lang?.

Sanchez 30. Okt 2003 11:31

Re: Farbcodes
 
Sakura hat in diesem Thread die FUnktion ColorToStr geschrieben, die liefert nie clRed zurück sondern immer den Hexwert der Farbe.

F.W. 31. Okt 2003 15:35

Re: Farbcodes
 
Sie gibt nicht immer die selbe Länge zurück, ich habe mal ein Bild konvertiert, geht übrigens schnell, also danke erstmal!
Aber:
Der erste Farbcode ist immer 7 Zeichen lang (z.B. $0000FF), dann folgen 9stellige Zahlen(z.B. $00FF0000).
Ob in der Zeile dann nochmal ein 7 Zeichen langer Farbcode enthalten ist, habe ich jetzt nicht geprüft.

Wieso ist aber in jeder Zeile der erste Farbcode nnur 7stellig?

Sanchez 2. Nov 2003 13:48

Re: Farbcodes
 
eigentlich sollte jeder Farbcode 7stellig sein


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:34 Uhr.
Seite 2 von 3     12 3      

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