PetitLoader v1.0

Windows WinMM Lightweight Load Library for Free Pascal / Lazarus

概要

PetitLoader は、Free Pascal / Lazarus環境でWindows API (WinMM) をベースとした、画像描画・サウンド再生・アニメーション補間を効率化するための軽量ライブラリです。

1. 生成と破棄

メソッド説明
constructor Create(AhWnd, AWidth, AHeight) インスタンスの生成。対象のウィンドウハンドルと描画バッファサイズを指定します。内部でダブルバッファ用のDCを作成します。
destructor Destroy インスタンスの破棄。バックバッファ、ビットマップ、DCなどのGDIリソースをすべて安全に解放します。

2. 画像描画機能

ビットマップの読み込みと転送を行います。TargetDC には通常 TPetitDraw.BackDC を渡します。

メソッド説明
LoadBMP(FileName): HBITMAPBMPファイルを読み込みハンドルを返します。LR_CREATEDIBSECTION を使用し、高速な描画を可能にします。
FreeBMP(var hBmp)画像をメモリから解放し、変数を0にリセットします。
DrawImagePart(TargetDC, hBmp, dx, dy, dw, dh, sx, sy, sw, sh)画像の一部を転送。StretchBlt による拡大縮小に対応。
DrawImageTransparent(TargetDC, hBmp, dx, dy, dw, dh, sx, sy, sw, sh, TransColor)特定の色を透過して描画。msimg32.dll の TransparentBlt を使用。
SetClipRect(x, y, w, h)描画領域を制限します。枠外へのはみ出し防止に使用します。

3. オーディオ機能

WinMM (MCI) を使用し、外部DLL不要でサウンドを再生します。

メソッド説明
PlaySE(FileName)効果音(WAV)の非同期再生。即座に制御を戻します。
PlayBGM(FileName)BGM(MP3)の非同期ループ再生を行います。
StopBGM再生中の全てのBGMを停止します。

4. アニメーション補助 (Easing)

GetEasing(t: Single; Easing: TEasingType): Single

時間 t (0.0 ~ 1.0) を渡すと、指定されたアルゴリズムで補間された値を返します。

5. 実装例 (PetitDraw2との連携)

        // 描画ループ内での使用例
procedure OnUpdate;
begin
  Draw.Clear(RGB(0, 0, 0));
  // Loaderを使用してDrawのバッファへ描画
  Loader.DrawImageTransparent(Draw.BackDC, hPlayerBmp, x, y, 32, 32, 0, 0, 32, 32, clFuchsia);
  Draw.Present;
end;