Показать сообщение отдельно
  #13  
Старый 04.04.2012, 01:04
Аватар для Mp3
Mp3 Mp3 вне форума
Новичок
 
Регистрация: 05.03.2012
Сообщения: 82
Репутация: 10
По умолчанию

Код:
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.
Админ: учимся корректно пользоваться тегами!

все работает но как всегда чет не до конца,когда запускаю программу треугольник вращается...но назад как вращается не видно...потому что он уже закрашен.....не подскажите что делать???
вот как это выглядит
линии накладываются друг на друга%)
как можно это исправить?
Ответить с цитированием