Guten Morgen,
ich habe mittels for-Schleifen ein Schachbrett erstellt.
DIe Schachfiguren stelle ich mittels PictureBoxen dar. Nun habe ich aber bei der Ermittlung der korrekten Koordinaten meiner Schachfigur-PictureBoxen ein kleines Problemchen. Die Koordinaten für die PictureBox.Location sind
Allerdings habe ich die Vermutung, dass eine Umrechnung zwischen Pixel, die Einheit also, mit der das Bitmap gezeichnet wurde, und Koordinate, die Einheit, mit der die Location der PictureBox angegeben wird, erforderlich ist.
Ich finde aber keinen erfolgreichen Ansatz, wie ich das machen kann. Das mündet irgendwie alles dahin, dass das alles sehr unsauber aussieht.
Hätte vielleicht einer eine Idee? Bin ich mit dem jetzigen Vorgehen auf dem Holzweg?
Viele Grüße,
Michael
Dieses Bild zeigt, was schief läuft. Die PictureBox hat eine Size von 113, wie die Quadrate eigentlich auch, aber trotzdem wird diese kleiner als das "a8"-Qaudrat dargestellt. Außerdem sind der linke und obere Rand der PictureBox überhaupt nicht gleich mit dem linken und oberen Rand des "a8"-Quarats.
Aus Gründen der besseren Erkennbarkeit hat die PictureBox einen pinken Hintergrund, dieser wird, wenn ich das Problem lösen konnte, auf transparent gestellt.
Dieses Bild zeigt eine weitere Schachfigur, die allerdings exakt genau mit der Location Point(9, 9) und der Size(170, 174) in das Quadrat passt. Die eigentlichen "Koordinaten" des "a8"-Quadrats sind Point(6, 6) und Size(113, 113), zumindest wurde es mit diesen Zahlen gezeichnet.
ich habe mittels for-Schleifen ein Schachbrett erstellt.
C#-Quellcode
- for (byte file = 0; file < 8; ++file)
- {
- for (byte rank = 0; rank < 8; ++rank)
- {
- bool isLightSquare = (file + rank) % 2 == 0;
- var squareColor = isLightSquare ? lightSquareColor : darkSquareColor;
- DrawSquare(new Point(boardLocation.X + rank * squareSize, boardLocation.Y + file * squareSize), squareColor);
- }
- }
DIe Schachfiguren stelle ich mittels PictureBoxen dar. Nun habe ich aber bei der Ermittlung der korrekten Koordinaten meiner Schachfigur-PictureBoxen ein kleines Problemchen. Die Koordinaten für die PictureBox.Location sind
new Point(boardLocation.X + rank * squareSize, boardLocation.Y + file * squareSize)
, wobei boardLocation den Abstand vom Fensterrand angibt. rank ist die Spalte, file ist die Zeile. Die squareSize ist 113, mit dieser Zahl wurden auch mittels Graphics.FillRectangle(...)
die einzelnen Quadrate erstellt.Allerdings habe ich die Vermutung, dass eine Umrechnung zwischen Pixel, die Einheit also, mit der das Bitmap gezeichnet wurde, und Koordinate, die Einheit, mit der die Location der PictureBox angegeben wird, erforderlich ist.
Ich finde aber keinen erfolgreichen Ansatz, wie ich das machen kann. Das mündet irgendwie alles dahin, dass das alles sehr unsauber aussieht.
Hätte vielleicht einer eine Idee? Bin ich mit dem jetzigen Vorgehen auf dem Holzweg?
Viele Grüße,
Michael
Dieses Bild zeigt, was schief läuft. Die PictureBox hat eine Size von 113, wie die Quadrate eigentlich auch, aber trotzdem wird diese kleiner als das "a8"-Qaudrat dargestellt. Außerdem sind der linke und obere Rand der PictureBox überhaupt nicht gleich mit dem linken und oberen Rand des "a8"-Quarats.
Aus Gründen der besseren Erkennbarkeit hat die PictureBox einen pinken Hintergrund, dieser wird, wenn ich das Problem lösen konnte, auf transparent gestellt.
Dieses Bild zeigt eine weitere Schachfigur, die allerdings exakt genau mit der Location Point(9, 9) und der Size(170, 174) in das Quadrat passt. Die eigentlichen "Koordinaten" des "a8"-Quadrats sind Point(6, 6) und Size(113, 113), zumindest wurde es mit diesen Zahlen gezeichnet.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „rwCapt“ ()