|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"スクリーンセーバを作成する人へ"
スクリーンセーバーを作ろうとしている人へ
フォームにコンポーネントを貼り付け、スクリーンセーバー本体を
作るだけで、スクリーンセーバーになるコンポーネントを作りました。
キャンバスに描画できる人なら
誰でもスクリーンセーバーを作る事が出来ると思います
データライブラリのVCLコンポーネント(フリー配布)816番に登録してあります。
|ファイル名 : ScreenServer.zip
|サイズ : 12539
| 検索キー : TScreenServer , Component|
以下のプログラムはサンプルです。
見てもらえばわかりますが、スクリーンセーバー本体しかありません。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ScreenServer;
type
TForm1 = class(TForm)
ScreenServer1: TScreenServer;
procedure FormCreate(Sender: TObject);
procedure ScreenServer1ScreenServer(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
LocateE,LocateF,LocateX,LocateY,MoveE,MoveF,MoveX,MoveY : array[0..15] of
Integer;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
I : Integer;
begin
with ScreenServer1 do
begin
for I:=0 to 15 do
begin
LocateE[I] := Random(BitMap.Width );
LocateF[I] := Random(BitMap.Height);
LocateX[I] := Random(BitMap.Width );
LocateY[I] := Random(BitMap.Height);
MoveE[I] := Random(8)+8;
MoveF[I] := Random(8)+8;
MoveX[I] := Random(8)+8;
MoveY[I] := Random(8)+8;
end;
BitMap.Canvas.Pen.Color := clRed;
BitMap.Canvas.Brush.Color := clBlack;
end;
Exit;
end;
procedure TForm1.ScreenServer1ScreenServer(Sender: TObject);
var
I : Integer;
begin
with ScreenServer1.BitMap do
begin
{背景をクリアーする場合}
Canvas.FillRect (Rect(0,0,Width,Height));
{背景をクリアーせずディスクトップ上に描画する場合}
Canvas.Draw (0,0,ScreenServer1.BitBak);
end;
for I:=0 to 15 do
begin
with ScreenServer1 do
begin
BitMap.Canvas.LineTo (LocateE[I],LocateF[I]);
BitMap.Canvas.MoveTo (LocateX[I],LocateY[I]);
LocateE[I] := LocateE[I] + MoveE[I];
LocateF[I] := LocateF[I] + MoveF[I];
LocateX[I] := LocateX[I] + MoveX[I];
LocateY[I] := LocateY[I] + MoveY[I];
if (LocateE[I]<0) or (LocateE[I]>BitMap.Width )
then MoveE[I] := MoveE[I] * -1;
if (LocateF[I]<0) or (LocateF[I]>BitMap.Height)
then MoveF[I] := MoveF[I] * -1;
if (LocateX[I]<0) or (LocateX[I]>BitMap.Width )
then MoveX[I] := MoveX[I] * -1;
if (LocateY[I]<0) or (LocateY[I]>BitMap.Height)
then MoveY[I] := MoveY[I] * -1;
end;
end;
Exit;
end;
KHE00221 t.matsui
Original document by t.matsui 氏 ID:(KHE00221)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|