![]() |
|
|
#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)
|