Конференция "Media" » Курсовик Срочно! [D7, WinXP]
 
  • clubnace © (19.05.10 12:14) [0]
    ПАрни Помогите с курсовиком!!!!!!!!!!  
    Задание: image делится по запросу пользователя;
    картинку Выбирет пользователь( тобишь заместо Рабочего стола)
    Скорость Позапросу пользователя
    Цвет квадрата по запросу пользователя))

    unit Mw;

    interface

    uses
     Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
     ExtCtrls, StdCtrls, Buttons;

    type
     TForm1 = class(TForm)
       Timer1: TTimer;
       Image1: TImage;
       Button1: TButton;
       procedure FormCreate(Sender: TObject);
       procedure Timer1Timer(Sender: TObject);
       procedure Button1Click(Sender: TObject);
       procedure FormClose(Sender: TObject; var Action: TCloseAction);
     private
       { Private declarations }
     public
       { Public declarations }
     end;

    var
     Form1: TForm1;
     DesktopBitmap   : TBitmap;
     gx, gy          : Integer;
     redRect         : TBitmap;
     rW, rH          : Integer;

    const
     Delta=8;//число квадратов на которые будет разбито окно (должно быть 2*n)

    implementation

    {$R *.DFM}

    procedure TForm1.FormCreate(Sender: TObject);

    procedure InitScreen;
    var
    i:integer;
    begin
    //получаем битмап десктопа
    DesktopBitmap:=TBitmap.Create;
    with DesktopBitmap do
     begin
      Width:=Screen.Width;
      Height:=Screen.Height;
     end;
    BitBlt(DesktopBitmap.Canvas.Handle,
                    0,0,Screen.Width,Screen.Height,
                               GetDC(GetDesktopWindow),0,0,SrcCopy);
    Form1.Image1.Picture.Bitmap:=DesktopBitmap;
    //изначальные координаты redRect
    Randomize;
    gx:=Trunc(Random*Delta);
    gy:=Trunc(Random*Delta);
    Form1.Image1.Canvas.CopyRect(
               Rect(rW*gx, rH*gy, rW*gx+rW, rH*gy+rH),
                                    redRect.Canvas, Rect(0,0,rW,rH));
    //рисуем сетку
    for i:=0 to DELTA-1 do
     begin
      Form1.Image1.Canvas.MoveTo(rW*i,0);
      Form1.Image1.Canvas.LineTo(rW*i,Screen.Height);
      Form1.Image1.Canvas.MoveTo(0, rH*i);
      Form1.Image1.Canvas.LineTo(Screen.Width, rH*i);
     end;
    end;

    begin
    ShowCursor(False);
    SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,0,0);
    //SystemParametersInfo(spi_ScreenSaverRunning,1,@Dummy,0);
    Button1.Cancel:=true;//выход на "Esc"
    //Panel1.Left:=Button1.Left-10;
    //Panel1.Top:=Button1.Top-10;
    rW:=Screen.Width div Delta;
    rH:=Screen.Height div Delta;
    redRect:=TBitmap.Create;
    with redRect do
     begin
      Width:=rW;
      Height:=rH;
      Canvas.Brush.Color:=clRed;
      Canvas.Brush.Style:=bssolid;
      Canvas.Rectangle(0,0,rW,rH);
      Canvas.Font.Color:=clNavy;
      Canvas.Font.Style:=Canvas.Font.Style+[fsBold];
      Canvas.TextOut(2,2,'About');
      Canvas.Font.Style:=Canvas.Font.Style-[fsBold];
      Canvas.TextOut(2,17,'Delphi');
      Canvas.TextOut(2,32,'Programming');
     end;
    Timer1.Enabled:=False;
    Image1.Align:=alClient;
    Visible:=False;
    BorderStyle:=bsNone;
    Top:=0;
    Left:=0;
    Width:=Screen.Width;
    Height:=Screen.Height;
    InitScreen;
    Visible:=True;
    Timer1.Interval:=10; // меньше-быстрее
    Timer1.Enabled:=True; // Запускаем вызов DrawScreen
    end;

    procedure TForm1.Timer1Timer(Sender: TObject);

    procedure DrawScreen;
    var
    r1,r2:TRect;
    Direction:integer;
    begin
    r1:=Rect(rW*gx , rH*gy,  rW*gx+rW  , rH*gy+rH);
    Direction:=Trunc(Random*4);
     case Direction of
      0: gx:=Abs((gx+1) mod Delta);    //право
      1: gx:=Abs((gx-1) mod Delta);    //лево
      2: gy:=Abs((gy+1) mod Delta);    //низ
      3: gy:=Abs((gy-1) mod Delta);    //верх
     end; //case
    r2:=Rect(rW*gx , rH*gy,  rW*gx+rW  , rH*gy+rH);
    with Form1.Image1.Canvas do
     begin
      CopyRect(r1, Form1.Image1.Canvas, r2);
      CopyRect(r2, redRect.Canvas, redRect.Canvas.ClipRect);
     end;
    end;

    begin
    DrawScreen;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ShowCursor(True);
    Close;
    end;

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,0,0);
    end;

    end.
 
Конференция "Media" » Курсовик Срочно! [D7, WinXP]
Есть новые Нет новых   [134430   +2][b:0][p:0]