デルファイの特殊な形のフォームをどのように実装するか

Delphiで特殊な形状のウィンドウを作るには、以下の手順が役立ちます。

  1. BorderStyle プロパティを bsNone に設定した新しいフォームを作成して、フォームの枠線を非表示にします。
  2. 在窗体上绘制所需的异形形状。可以通过在窗体的OnPaint事件中使用Canvas对象的绘图函数,如MoveTo、LineTo、Arc等,绘制自定义的形状。
  3. フォームのRegionプロパティを使用してフォームの形状を設定します。新しいRegion Rgnを作成し、フォームのSetWindowRgn関数を使用してその領域をフォームに適用することで行うことができます。例えば:
var
  Rgn: HRGN;
begin
  Rgn := CreateEllipticRgn(0, 0, Width, Height); // 创建一个椭圆形区域
  SetWindowRgn(Handle, Rgn, True); // 将区域应用到窗体上
end;

楕円の作成関数の引数を調整することで、さまざまな形状の領域を作成して、異なった形をしたウィンドウ効果をを実現することができます。

  1. ウインドウをドラッグする場合は、ウインドウのMouseDown、MouseMove、MouseUpイベントでドラッグを処理できます。例:
var
  MouseDown: Boolean;
  MouseOffset: TPoint;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  MouseDown := True;
  MouseOffset := Point(X, Y);
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  if MouseDown then
    Left := Left + X - MouseOffset.X;
    Top := Top + Y - MouseOffset.Y;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  MouseDown := False;
end;

マウスダウンイベントでマウスが押された位置を記録して、MouseDownフラグをTrueにする。マウスムーブイベントで、MouseDownがTrueのとき、マウスの移動距離からフォームの位置を調整する。マウスアップイベントで、MouseDownフラグをFalseにしてマウスが離れたことを示す。

上記のステップを実行することで、Delphiで異形ウインドウの効果を実現できます。

bannerAds