![]() |
|
|
|
|
#1
|
|||
|
|||
|
Здравствуйте.
Подскажите как правильно организовать цикл, чтобы в компоненте TImage был нарисован такой рисунок, и все квадраты были пронумерованы как указанно на рисунке. |
|
#2
|
||||
|
||||
|
Цитата:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
bmp: TBitmap;
can: TCanvas;
i, X, Y: Integer;
R: TRect;
s: String;
begin
bmp := Image1.Picture.Bitmap;
bmp.Width := 357;
bmp.Height := 61;
can := bmp.Canvas;
can.Brush.Color := clWhite;
can.FillRect(Rect(0, 0, bmp.Width, bmp.Height));
can.Pen.Color := clGreen;
for i := 0 to 19 do
begin
X := 3 + 30 * (i mod 2) + 76 * (i div 4) - 3 * (i div 8);
Y := 4 + 30 * ((i div 2) mod 2);
R := Rect(X, Y, X + 20, Y + 20);
can.Brush.Color := $339900;
can.Brush.Style := bsSolid;
can.Rectangle(R);
s := IntToStr(i + 1);
Inc(X, (20 - can.TextWidth(s)) div 2);
Inc(Y, (20 - can.TextHeight(s)) div 2);
can.Brush.Style := bsClear;
can.TextRect(R, X, Y, s);
end;
end; |
| Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
NaN43 (24.05.2014)
| ||
|
#3
|
|||
|
|||
|
Большое спасибо.
Имеется еще один вопросик: возможно ли при таком построении получить, в переменную, цифру из квадрата, при клике ЛКМ по нему и если возможно то с помощью каких процедур или событий? Последний раз редактировалось NaN43, 24.05.2014 в 19:34. |
|
#4
|
||||
|
||||
|
Цитата:
В примере обрабатывается событие OnMouseUp (отпускание кнопки мышки): Код:
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
i: Integer;
R: TRect;
Pt: TPoint;
begin
if Button = mbLeft then
begin
Pt := Point(X, Y);
for i := 0 to 19 do
begin
X := 3 + 30 * (i mod 2) + 76 * (i div 4) - 3 * (i div 8);
Y := 4 + 30 * ((i div 2) mod 2);
R := Rect(X, Y, X + 20, Y + 20);
if PtInRect(R, Pt) then
begin
ShowMessageFmt('Кликнули по числу %d', [i + 1]);
Exit;
end;
end;
end;
end; |
| Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
NaN43 (25.05.2014)
| ||