Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
ScrollBar1: TScrollBar;
procedure Scrollbar1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure DrawRect;
public
{ Public declarations }
end;
var
Form1: TForm1;
x0, y0 : Integer;
cosa, sina : Double;
RectCooOrg,
RectCooLast : array[0..3] of TPoint;
const
pi2 = 2 * pi;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
x0 := Image1.Width div 2;
y0 := Image1.Height div 2;
RectCooOrg[0].X := -120;
RectCooOrg[0].Y := 65;
RectCooOrg[1].X := 120;
RectCooOrg[1].Y := 65;
RectCooOrg[2].X := 10;
RectCooOrg[2].Y := -120;
RectCooOrg[3].X := -120;
RectCooOrg[3].Y := 65;
RectCooLast := RectCooOrg;
cosa := cos(pi2 * Scrollbar1.Position / 360);
sina := sin(pi2 * scrollbar1.Position / 360);
DrawRect;
end;
procedure TForm1.Scrollbar1Change(Sender: TObject);
begin
cosa := cos(pi2 * Scrollbar1.Position / 360);
sina := sin(pi2 * Scrollbar1.Position / 360);
DrawRect;
end;
procedure TForm1.DrawRect;
var
I : Integer;
begin
Image1.Canvas.Pen.Color := clblack;
for I := 0 to 3 do
begin
RectCooLast[i].X := Round(RectCooOrg[i].X * cosa - RectCooOrg[i].Y * sina + x0);
RectCooLast[i].Y := Round(RectCooOrg[i].Y * cosa + RectCooOrg[i].X * sina + y0);
end;
Image1.Canvas.Polyline(RectCooLast);
end;
end.
Админ: учимся корректно пользоваться тегами!
все работает но как всегда чет не до конца,когда запускаю программу треугольник вращается...но назад как вращается не видно...потому что он уже закрашен.....не подскажите что делать???
вот как это выглядит

линии накладываются друг на друга%)
как можно это исправить?