delphi寮傚舰绐椾綋鎬庝箞瀹炵幇
Delphi涓殑寮傚舰绐椾綋瀹炵幇鍙互閫氳繃浠ヤ笅姝ラ瀹炵幇锛?/p>
-
鍒涘缓涓€涓柊鐨勭獥浣擄紝骞惰缃獥浣撶殑BorderStyle灞炴€т负bsNone锛屼互渚块殣钘忕獥浣撶殑杈规銆?/p>
-
鍦ㄧ獥浣撲笂缁樺埗鎵€闇€鐨勫紓褰㈠舰鐘躲€傚彲浠ラ€氳繃鍦ㄧ獥浣撶殑OnPaint浜嬩欢涓娇鐢–anvas瀵硅薄鐨勭粯鍥惧嚱鏁帮紝濡侻oveTo銆丩ineTo銆丄rc绛夛紝缁樺埗鑷畾涔夌殑褰㈢姸銆?/p>
-
浣跨敤绐椾綋鐨凴egion灞炴€ф潵璁剧疆绐椾綋鐨勫舰鐘躲€傚彲浠ラ€氳繃鍒涘缓涓€涓柊鐨勫尯鍩烺gn锛屽苟浣跨敤绐椾綋鐨凷etWindowRgn鍑芥暟灏嗚鍖哄煙搴旂敤鍒扮獥浣撲笂銆備緥濡傦細
var
Rgn: HRGN;
begin
Rgn := CreateEllipticRgn(0, 0, Width, Height); // 鍒涘缓涓€涓き鍦嗗舰鍖哄煙
SetWindowRgn(Handle, Rgn, True); // 灏嗗尯鍩熷簲鐢ㄥ埌绐椾綋涓?/span>
end;
閫氳繃璋冩暣CreateEllipticRgn鍑芥暟鐨勫弬鏁帮紝鍙互鍒涘缓涓嶅悓褰㈢姸鐨勫尯鍩燂紝瀹炵幇涓嶅悓鐨勫紓褰㈢獥浣撴晥鏋溿€?/p>
- 濡傛灉闇€瑕佹嫋鍔ㄧ獥浣擄紝鍙互鍦ㄧ獥浣撶殑MouseDown銆丮ouseMove鍜孧ouseUp浜嬩欢涓疄鐜版嫋鍔ㄥ姛鑳姐€備緥濡傦細
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;
鍦∕ouseDown浜嬩欢涓褰曢紶鏍囨寜涓嬬殑浣嶇疆锛屽苟灏哅ouseDown鏍囧織璁句负True銆傚湪MouseMove浜嬩欢涓紝濡傛灉MouseDown涓篢rue锛屾牴鎹紶鏍囩殑绉诲姩璺濈璋冩暣绐椾綋鐨勪綅缃€傚湪MouseUp浜嬩欢涓紝灏哅ouseDown鏍囧織璁句负False锛岃〃绀洪紶鏍囧凡鏉惧紑銆?/p>
閫氳繃涓婅堪姝ラ锛屾偍鍙互瀹炵幇Delphi涓殑寮傚舰绐椾綋鏁堟灉銆?/p>
相关问答