Анимация

Тема в разделе "Delphi - Multimedia, Графика, Игры", создана пользователем -, 20 дек 2010.

  1. Гость

    Здравствуйте уважаемые программисты. Помогите пожалуйста найти ошибку. Задание: создать в Delphi трехстраничный блокнот с графикой. На третьей странице должен быть прямоугольник, а по его сторонам при нажатии кнопки (BitBtn) катится шарик.
    Что то пыталась сделать, в результате: Шарик появляется не совсем там где нужно, кнопки невидимы, и через какое то время выбивает ошибку, что то про ресурсы. Помогите пжл, в чем ошибка? Заранее спасибо.
    Вот код программы:

    Код (Text):
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, ComCtrls, TabNotBk, StdCtrls, ExtCtrls, Spin, Buttons;

    type
    TForm1 = class(TForm)
    nb1: TTabbedNotebook;
    bvl1: TBevel;
    chk1: TCheckBox;
    rg1: TRadioGroup;
    se2: TSpinEdit;
    se3: TSpinEdit;
    se1: TSpinEdit;
    lbl1: TLabel;
    lbl2: TLabel;
    lbl3: TLabel;
    bvl2: TBevel;
    pb1: TPaintBox;
    pb2: TPaintBox;
    pb3: TPaintBox;
    lbl4: TLabel;
    ScrollBar1: TScrollBar;
    lbl5: TLabel;
    lbl6: TLabel;
    btn1: TBitBtn;
    btn2: TBitBtn;
    se4: TSpinEdit;
    se5: TSpinEdit;
    se6: TSpinEdit;
    se7: TSpinEdit;
    chk2: TCheckBox;
    lbl7: TLabel;
    lbl8: TLabel;
    lbl9: TLabel;
    lbl10: TLabel;
    tmr1: TTimer;
    lbl11: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure pb3Paint(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure tmr1Timer(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;
    x0,y0: Integer;
    BitMap1: TBitmap;
    BitMap2: TBitmap;
    BitMap3: TBitmap;
    Rect1 : TRect;
    L    : Integer;
    const
    Rl=20;
    Ck=180;
    Cs=0;
    implementation

    {$R *.dfm}

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Application.Icon:=Form1.Icon;
    end;

    procedure TForm1.pb3Paint(Sender: TObject);
    var i : Integer;
    begin
    with pb3, Canvas do begin
    CopyMode:=cmSrcCopy;
    x0:= Width div 2;
    y0:= Height div 2;
    Brush.Style:=bsSolid;
    Brush.Color:=clBlack;
    FillRect(Rect(0,0,Width,Height));
    BitMap1:=TBitMap.Create;
    BitMap1.LoadFromFile('prjamougolnik.bmp');
    BitMap2:=TBitMap.Create;
    BitMap3:=TBitMap.Create;
    BitMap2.Height:=Rl;   BitMap2.Width:=Rl;
    BitMap3.Height:=Rl;   BitMap3.Width:=Rl;
    Rect1:=Rect(0,0,Rl,Rl);
    BitMap3.Canvas.CopyRect(Rect1,Canvas,Rect(20,20,20+Rl,20+Rl));
    Brush.Color:=clBlue;
    Ellipse(20,20,20+Rl,20+Rl);
    BitMap2.Canvas.CopyRect(Rect1,Canvas, Rect(20,20,20+Rl,20+Rl));
    Brush.Color:=clBlack;
    FillRect(Rect(0,0,Width,Height));
    Draw(20,20,BitMap3);
    Draw((Width div 2)-(BitMap1.Width div 2),
    (Height div 2)- (BitMap1.Height div 2), BitMap1);
    for i:=1 to Cs do Pixels[Random(Width),Random(Height)]:=clRed;
    Tmr1Timer(Tmr1)
    end;
    end;
    procedure TForm1.btn1Click(Sender: TObject);
    begin
    Tmr1.Enabled:=True;
    end;

    procedure TForm1.btn2Click(Sender: TObject);
    begin
    Tmr1.Enabled:=False;
    end;

    procedure TForm1.tmr1Timer(Sender: TObject);
    var x1,y1,x2,y2 : Integer;
    t         : Real;
    begin
    with pb3.Canvas do begin
    t:=(l)/Ck*Pi*2;
    x1:=Round(x0+Width div 3*Cos(t)-Rl div 2);
    y1:=Round(y0+Height div 3*sin(t)- Rl div 2);
    x2:=x1+Rl;
    y2:=y2+Rl;
    Draw(x1,y1,BitMap3);
    L:=L+1;
    if L>Ck then L:=1;
    lbl11.Caption:=IntToStr(l);
    t:=(l)/Ck*Pi*2;
    x1:=Round(x0+Width div 3*Cos(t)-Rl div 2);
    y1:=Round(y0+Height div 3*sin(t)- Rl div 2);
    x2:=x1+Rl;
    y2:=y2+Rl;
    Draw(x1,y1,BitMap2);
    end;
    end;

    end.
     
  2. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Если еще актуально, то вопрос
    как катится шарик(внутри квадрата, или снаружи)?
     
  3. acorn

    acorn PHP Developer
    Web Team

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    С такими названиями переменных и без комментариев желание разбираться с кодом отсутствует.
     
  4. Гость

    Спасибо, но я уже сделала =)

    Добавлено:
    Я понимаю, с комментариями легче, но как то нас к этому не приучили =( с таким объемом заданий и коротким сроком на выполнение, на комменты и переменные не обращаешь внимания, главное чтоб работало...
     
Загрузка...

Поделиться этой страницей