Delphi编写星光效果

简介: 一 窗体设计 object Form1: TForm1  Left = 0  Top = 0  Caption = 'Form1'  ClientHeight = 397  ClientWidth = 530  Color = clNone  Font.

一 窗体设计

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.

相关文章
|
6月前
|
C++ Python
Python基础教程(第3版)中文版 第7章 类和对象(笔记)
Python基础教程(第3版)中文版 第7章 类和对象(笔记)
|
存储 JavaScript 前端开发
JavaScript 编程精解 中文第三版 十六、项目:平台游戏
十六、项目:平台游戏 原文:Project: A Platform Game 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了《JavaScript 编程精解(第 2 版)》 所有现实都是游戏。
1140 0
|
前端开发 JavaScript 编译器
JavaScript 编程精解 中文第三版 十二、项目:编程语言
十二、项目:编程语言 原文:Project: A Programming Language 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了《JavaScript 编程精解(第 2 版)》 确定编程语言中的表达式含义的求值器只是另一个程序。
1248 0
x3d
|
Web App开发 前端开发
是否要学点GUI编程
传统GUI编程相对于Web前端编程来说,应该要复杂点。以MVC的要求来看,大多数现有系统代码可能都不达标。但在Web领域,通过框架的约束,是个人都知道要MVC。 MVC有Classic MVC和Web MVC,其主要的区别在于M与V是否耦合。
x3d
863 0
|
JavaScript 前端开发 Windows
Delphi TWebBrowser编程简述(转帖)
Delphi 3开始有了TWebBrowser构件,不过那时是以ActiveX控件的形式出现的,而且需要自己引入,在其后的4.0和5.0中,它就在封装好shdocvw.dll之后作为Internet构件组之一出现在构件面板上了。
1444 0
|
数据库 计算机视觉 Windows
054_《奇思异想编程序Delphi篇》
《奇思异想编程序Delphi篇》 Delphi 教程 系列书籍 (054) 《奇思异想编程序Delphi篇》 网友(邦)整理 EMail: shuaihj@163.
1278 0
|
数据可视化 数据库 Windows
058_《突破Delphi7.0编程实例五十讲》
《突破Delphi7.0编程实例五十讲》 Delphi 教程 系列书籍 (058) 《突破Delphi7.0编程实例五十讲》 网友(邦)整理 EMail: shuaihj@163.
1372 0
下一篇
DataWorks