小弟,最近在做一個繪圖程序,需要是畫棋盤格子作為主程序的背景,一個像素為一個小格子。
所以要實現對格子進行放大縮小。我想把他做成像Adobe reader那樣,分別通過點擊放大,縮小鈕然後對背景圖片進行操作,當背景圖片圖片的大小超過一定范圍後,只顯示一部分,然後可以通過鼠標右鍵拖動圖片,顯示想要觀察的部分.請各位高手指點指點,說說縮放,拖動顯示原理,有具體代碼最好了,謝謝!
所以要實現對格子進行放大縮小。我想把他做成像Adobe reader那樣,分別通過點擊放大,縮小鈕然後對背景圖片進行操作,當背景圖片圖片的大小超過一定范圍後,只顯示一部分,然後可以通過鼠標右鍵拖動圖片,顯示想要觀察的部分.請各位高手指點指點,說說縮放,拖動顯示原理,有具體代碼最好了,謝謝!
private
FBackBmp: TBitmap;
FIsDrag : Boolean; FBackBmp:= TBitmap.Create;
FBackBmp.LoadFromFile('Back.bmp');OnMouseDown(....)
if Button = mbLeft then FIsDrag:= true;OnMouseMove(....) // rctVisible为显示区域
if FIsDrag then
Bitblt(Self.Canvas.Handle, rctVisible.Left, rctVisible.Top,
rctVisible.Right - rctVisible.Left, rctVisible.Bottom - rctVisible.Top,
FBackBmp.Canvas.Handle, rctVisible.Left, rctVisible.Top, SRCCOPY);OnMouseUp(....)
FIsDrag:= false;
rctVisible.Right - rctVisible.Left, rctVisible.Bottom - rctVisible.Top,
FBackBmp.Canvas.Handle, rctVisible.Left, rctVisible.Top, SRCCOPY);
--------------
这里把BitBlt换成StretchBlt,参数你去看帮助吧。 然后你就可以放大图像了。具体代码我就不写了。自己慢慢学着写吧。