zoukankan      html  css  js  c++  java
  • Delphi编写星光效果

    一 窗体设计

    object Form1: TForm1
      Left = 0
      Top = 0
      Caption = 'Form1'
      ClientHeight = 397
      ClientWidth = 530
      Color = clNone
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'Tahoma'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      OnDestroy = FormDestroy
      PixelsPerInch = 96
      TextHeight = 13
      object Image1: TImage
        Left = 2
        Top = 2
        Width = 7
        Height = 9
        Transparent = True
      end
      object Timer1: TTimer
        OnTimer = Timer1Timer
        Left = 270
        Top = 226
      end
    end

    二 实现代码

    unit Unit1;

    interface

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

    type
      TDot=record
        Pos:TPoint;
        Vel:TPoint;
      end;

      TForm1 = class(TForm)
        Timer1: TTimer;
        Image1: TImage;
        procedure FormCreate(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        Dots:array[0..10] of TDot;
        offScreen:TBitmap;
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.FormCreate(Sender: TObject);
    var
      iCount:integer;
    begin
      offScreen :=TBitmap.Create;
      offScreen.Width :=Form1.ClientWidth;
      offScreen.Height :=Form1.ClientHeight;
      for iCount := 0 to 9 do
      begin
        Dots[iCount].Pos.X :=Random(ClientWidth);
        Dots[iCount].Pos.Y :=Random(ClientHeight);
        if Random(2)=0 then
          Dots[iCount].Vel.X :=-1
        else
          Dots[iCount].Vel.X :=1;

        if Random(2)=0 then
          Dots[iCount].Vel.Y :=-1
        else
          Dots[iCount].Vel.Y :=1;
      end;
    end;

    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      offScreen.Free;
    end;

    procedure TForm1.Timer1Timer(Sender: TObject);
    var
      iCount:integer;
    begin
      offScreen.Canvas.Brush.Color :=clBlack;
      offScreen.Canvas.FillRect(offScreen.Canvas.ClipRect);
      for iCount := 0 to 9 do
      begin
        Dots[iCount].Pos.X :=Dots[iCount].Pos.X+Dots[iCount].Vel.X;
        Dots[iCount].Pos.Y :=Dots[iCount].Pos.Y+Dots[iCount].Vel.Y;
        if (Dots[iCount].Pos.X<0) or (Dots[iCount].Pos.X>ClientWidth) then
          Dots[iCount].Pos.X :=0-Dots[iCount].Vel.X;

        if (Dots[iCount].Pos.Y<0) or (Dots[iCount].Pos.Y>ClientHeight) then
          Dots[iCount].Pos.Y :=0-Dots[iCount].Vel.Y;

        offScreen.Canvas.Pixels[Dots[iCount].Pos.X,Dots[iCount].Pos.Y] :=clRed;
        offScreen.Canvas.Pixels[Dots[iCount].Pos.X+1,Dots[iCount].Pos.Y] :=clRed;
        offScreen.Canvas.Pixels[Dots[iCount].Pos.X,Dots[iCount].Pos.Y+1] :=clRed;
        offScreen.Canvas.Pixels[Dots[iCount].Pos.X+1,Dots[iCount].Pos.Y+1] :=clRed;
      end;
      ExcludeClipRect(Canvas.Handle,Image1.Left,Image1.Top,Image1.Left+Image1.Width,Image1.Top+Image1.Height);
      Canvas.Draw(0,0,offScreen);
    end;

    end.

  • 相关阅读:
    wx_sample.php

    手机装linux系统
    MySQL导入导出命令
    PHP对表单提交特殊字符的过滤和处理
    sublime开启php自动代码补全
    寻找Linux单机负载瓶颈
    怎样成为PHP 方向的一个合格的架构师
    说说大型高并发高负载网站的系统架构
    数据库水平分割,垂直分割,库表散列浅谈
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2035817.html
Copyright © 2011-2022 走看看