paule22 Geschrieben 15. Oktober 2002 Geschrieben 15. Oktober 2002 Hallo Delphianer, Was für echte Programmierer : Ich habe ein riesen Problem: Ich habe eine TPaintBox in der ich rechteckige Quadrate als Netz zeichne Dimension: 25x25 Pixel in der Ausdehnung 25 Felder in X und 15 Felder in Y Richtung Der Rahmen hat 1 Pixel Die PaintBox hat also eine Dimension von 625x375 Pixeln unterteilt in 375 Feldern (Änlich einem Array) Wie ist es aber nun möglich zu Sagen, wenn ich auf Koordinate XY stehe, das ist Feld 1x2 oder Feld 2x3 ? Danke für Codebeispiele und Hilfe im Vorraus Paul Zitieren
MarcG Geschrieben 16. Oktober 2002 Geschrieben 16. Oktober 2002 Probier es mal, indem du den jeweiligen Wert, also X-Wert bzw. Y-Wert durch 25 teilst, das Ergebnis (ganzzahlig) ist dann die Position in Quadraten, beginnend bei Quadrat 0. Also 25 Quadrate links nach rechts 0 - 24. Dasselbe für die Y-Richtung... Codebeispiel erübrigt sich, denk ich Zitieren
TAZttDevil Geschrieben 16. Oktober 2002 Geschrieben 16. Oktober 2002 nur mal so am rande.. hast schon mal nicht rechteckige quadrate gesehen?? *ggg* gruß Taz Zitieren
paule22 Geschrieben 16. Oktober 2002 Autor Geschrieben 16. Oktober 2002 Hallo leutchen, kleiner schreibselfehler :-) naja Spass muss sein sprach Wallenstein .... :-) ging ganz easy, hier wem interessiert der Code: procedure TInitForm2.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var ax,ay, bx,by, cx,cy, xpos: Integer; begin bx := 0; by := 0; for ax := 0 to 25 do begin inc(bx,25); if (X >= bx-25) and (X <= bx) then begin cx := bx div 25; for ay := 0 to 15 do begin inc(by,25); if (Y >= by-25) and (Y <= by) then begin cy := by div 25; Label5.Caption := 'Feld ' + IntToStr(cx) + ' x ' + IntToStr(cy); break; end; end; break; end else Label5.Caption := 'Feld X'; end; Label4.Caption := 'Xpos: ' + IntToStr(X) + ', Ypos: ' + IntToStr(Y); end; Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.