![]() |
Delphi-Version: 5
Pixel zeilenweise durchnummerieren ohne scanline
Ich habe ein 100*100 Image, dessen 10.000 Pixel nach folgendem Schema durchnummeriert werden sollen:
(x,y):pixelnummer (1,1):1 (2,1):2 (3,1):3 ... (100,1):100 //Ende der ersten Zeile (1,2):101 (2,2):102 (3,2):103 ... //letzte Zeile: (1,100):9901 ... (99,100):9999 (100,100):10000 Ich kenne, bzw. darf nur mit image1.canvas.pixels[x,y] die Aufgabe lösen und habe keine Ahnung wie. In der Suche habe ich viele Lösungen mithile Scanlines(..) gesehen, das darf ich leider nicht verwenden. Bin für jeden Tipp dankbar! |
AW: Pixel zeilenweise durchnummerieren ohne scanline
Delphi-Quellcode:
Und besser in der Schule aufpassen.
procedure TForm1.Button1Click(Sender: TObject);
var x, y, k: Integer; begin with Image1.Picture.Bitmap do begin Width := 100 - 1; Height := 100 - 1; k := 0; for y := 0 to Width do for x := 0 to Width do begin Inc(k); Canvas.Pixels[x, y] := k; end; ShowMessage(IntToStr(k)); end; end; |
AW: Pixel zeilenweise durchnummerieren ohne scanline
Du hast sie doch schon soeben durchnummeriert, sogar ganz ohne Delphi!
|
AW: Pixel zeilenweise durchnummerieren ohne scanline
oder geht es um die hin und her Rechnerei?
Delphi-Quellcode:
procedure TForm1.SetPoint(index:Integer);
begin Image1.Canvas.Pixels[index div 100,index mod 100] := clBlack; end; procedure TForm1.Button1Click(Sender: TObject); var i:Integer; begin for I := 0 to 99 do SetPoint(100 * i + i); for I := 0 to 99 do SetPoint(100 * i + 99 - i); end; |
AW: Pixel zeilenweise durchnummerieren ohne scanline
Dein Bild hat eine Breite von 100. xMax=100;
Und eine Höhe von 100. yMax=100;
Delphi-Quellcode:
Der Wert in Nummer ergibt die durchnummerierte Zahl.xMin:=1; xMax:=100; yMin:=1; yMax:=100; EinerStelle:=x mod 10; ZehnerStelle:=x div 10; if (y > yMin) then ZehnerStelle:=ZehnerStelle + (y - yMin) * xMax; Nummer:=(ZehnerStelle * 10) + EinerStelle; MfG, terence |
AW: Pixel zeilenweise durchnummerieren ohne scanline
:wiejetzt:
Also ich lese die Frage nun schon mehrere Male durch und verstehe nach wie vor das Problem nicht. "Pixel numerieren". Soll da über einen eindimensionalen Index auf die zweidimensionale Pixelmatrix zugegriffen werden? Quasi 100 Zeilen horizontal aneinander gehängt? |
AW: Pixel zeilenweise durchnummerieren ohne scanline
@Codehunter
Ich denke die Aufgabe ist so einfach wie sie sich liest und sollte erst gar nicht interpretiert werden. Es ist wahrscheinlich eine Schulaufgabe. Also erst gar nicht anfangen da einen Hacken zu suchen mit der Begründung, dass es ja nicht so einfach sein kann. |
AW: Pixel zeilenweise durchnummerieren ohne scanline
Könnte damit zu tun haben, dass wir in der Schule keinen nennenswerten IT-Unterricht hatten und mir daher allzu einfache Aufgaben per se suspekt erscheinen ;-)
Mein erstes Hello-World-Programm schrieb ich erst in der Ausbildung und zwar in Assembler auf einem 8088-Prozessor. Vorher hatte ich schon die Lagerverwaltung aus dem AmigaBASIC-Handbuch um eine grafische Oberfläche erweitert... |
AW: Pixel zeilenweise durchnummerieren ohne scanline
Habe da auch viel zu kompliziert gedacht, also es war schlichtweg das gemeint:
Code:
Ich brauchte die Nummerieung, um jedes "Primzahlpixel" des 100*100 Image rot zu machen, alle anderen gelb.
[..]
for y := 1 to 100 do for x := 1 to 100 do begin Inc(k); end; Es mussten also die Primzahlen von 1..10.000 gesucht werden. Hab nicht gecheckt das das einfach inc(k) entspricht, weil ich nicht wusste wie die Schleife in der Schleife arbeitet. Wird erst Schleife 1 komplett durchlaufen dann Schleife 2, oder einmal Schleife 1, einmal Schleife 2? |
AW: Pixel zeilenweise durchnummerieren ohne scanline
Die äussere Schleife fängt bei Wert y= 1,
Dann wird die innere Schleife gestartet und diese läuft von x=1 bis X=100. Ist die innere Schleife beendet wird die äussere Schleife um eins hochgezählt und dann wird die innerer Schleife wieder bearbeitet. Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:01 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 by Thomas Breitkreuz