
05.11.2011, 00:31
|
 |
.
|
|
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
|
|
Вот для рисования колец:
Код:
unit Unit19;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin, ExtCtrls;
type
TForm2 = class(TForm)
Image1 : TImage;
Panel1 : TPanel;
Label1 : TLabel;
Label2 : TLabel;
Label3 : TLabel;
Label4 : TLabel;
OuterRadius: TSpinEdit;
InnerRadius: TSpinEdit;
CountCircle: TSpinEdit;
CountSectors: TSpinEdit;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2 : TForm2;
bmp : TBitmap;
Center : TPoint;
implementation
uses
Math;
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
bmp := TBitmap.Create;
bmp.Width := Image1.Width;
bmp.Height := Image1.Height;
Center.X := Image1.Width div 2;
Center.Y := Image1.Height div 2;
InnerRadius.MinValue := 10;
InnerRadius.MaxValue := (Image1.Width - 10) div 2;
InnerRadius.Value := InnerRadius.MaxValue;
end;
procedure TForm2.FormDestroy(Sender: TObject);
begin
bmp.Free;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
var
I, J : Integer;
X, Y : Integer;
begin
bmp.Canvas.Brush.Style := bsSolid;
bmp.Canvas.Brush.Color := clBtnFace;
bmp.Canvas.FillRect(Image1.ClientRect);
bmp.Canvas.Brush.Style := bsClear;
I := InnerRadius.Value div CountCircle.Value;
for J := 1 to CountCircle.Value do
bmp.Canvas.Ellipse(Center.X - J * I, Center.Y - J * I, Center.X + J * I, Center.Y + J * I);
if CountSectors.Value > 1 then
for J := 0 to CountSectors.Value - 1 do
begin
bmp.Canvas.LineTo(Center.X, Center.Y);
X := Round(Sin(J / CountSectors.Value * (pi * 2)) * InnerRadius.Value);
Y := Round(Cos(J / CountSectors.Value * (pi * 2)) * InnerRadius.Value);
bmp.Canvas.MoveTo(X + Center.X, Y + Center.Y);
end;
Image1.Canvas.Draw(0, 0, bmp);
end;
end.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
|