效果展示

交互流程
- 滑鼠按下:記錄起點
x1,y1,設旗標
- 滑鼠移動:旗標真 →
DrawFocusRect 畫虛線框 (XOR 模式可反覆畫除) → 更新 rt := Rect(x1,y1,X,Y) → 再畫一次移動框
- 滑鼠釋放:確定
rt,清旗標,Repaint
- 重繪:
g.DrawImage(img, MakeRect(rt)) 將圖片拉伸填滿目標矩形
關鍵代碼
procedure TForm1.FormMouseMove(...);
begin if flag then begin
DrawFocusRect(Canvas.Handle, rt); // 擦除舊框
rt := Rect(x1, y1, X, Y); // 更新新框
DrawFocusRect(Canvas.Handle, rt); // 畫新框
end; end;
procedure TForm1.FormPaint(...);
var g: TGPGraphics; begin g := TGPGraphics.Create(Self.Canvas.Handle);
if rt.Right > 0 then g.DrawImage(img, MakeRect(rt)); g.Free; end;