[Delphi] Canvas i siatka

0

user image

     x1:=0;
     y1:=0;
     x2:=64;
     y2:=64;
     if (pozycja_myszy.X>x1) and
        (pozycja_myszy.Y>y1) and
        (pozycja_myszy.X<x2) and
        (pozycja_myszy.Y<y2) then
        begin
             Form1.Canvas.Pen.Width:=1;
             Form1.Canvas.Pen.Color:=clGreen;
             Form1.Canvas.Brush.Style:=bsClear;
             Form1.Canvas.Brush.Color:=clGreen;
             Form1.Canvas.Rectangle(0,0,64,64);
        end;

załóżmy że kwadrat ma wymiar 64px na 64px
dla kwadratu 0,0 napisałem powyższy kod aby wyświetlał zielony kwadrat miedzy współrzędnymi 0,0 a 64,64... pytanie brzmi jak napisać to do reszty bez ifów?

0
  xm := pozycja_myszy.x;
  ym := pozycja_myszy.y;
        begin
             Form1.Canvas.Pen.Width:=1;
             Form1.Canvas.Pen.Color:=clGreen;
             Form1.Canvas.Brush.Style:=bsClear;
             Form1.Canvas.Brush.Color:=clGreen;
             Form1.Canvas.Rectangle((xm div 64)*64,(ym div 64)*64,((xm div 64) + 1)*64,((ym div 64) + 1)*64);
        end;

Ten kod powinien Ci dzialac bez zadnych if'ow. Po prostu rysuje kwadrat pod myszka.
Edit:
Oczywiscie przy uwzglednieniu siatki.

0

za cholerę nie wpadłbym na to :P
dzięki :)

0

lub bez nawiasów:

Form1.Canvas.Rectangle(xm div 64*64, ym div 64*64, xm div 64*64+64, ym div 64*64+64;

Ale co jest bardziej optymalne to musisz już sam sprawdzić :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1