影象框(image)和框(picturebox)都是用於顯示圖形,可以顯示.bmp;.ico;.wmf; .jpg;.gif等型別的檔案.框不僅可以顯示影象,還可以作為其他控制項的容器,因此picturebox控制項比image控制項功能更強.
一些屬性:
(1)picture屬性:用於設定在影象框與框重要顯示的影象檔名.科在設計是通過屬性或在執行時呼叫loadpicture函式來設定.
例如: picture1.picture=loadpicture("d:/pic/girl.jpg")
(2)align屬性
align屬性用於設定框再窗體中的顯示方式.0(預設)無特殊顯示,1為與窗體一樣寬,位於窗體頂端;2為與窗體一樣寬,位於窗體底端;3為與窗體一樣高, 位於窗體左端;4為與窗體一樣高,位於窗體右端.
(3)image的stretch屬性
stretch屬性用於確定影象框如何與相適合.true為影象將適應影象框的大小,false為影象框將適應影象的大小.
(4)框的autosize屬性
autosize屬性用於確定框如何與影象相適應.false為保持原始尺寸,當圖形比框大時,超出的部分被截去,true為框根據圖形大小自動調整,也就是說多大,框就變成多大.
下面我就基於這兩個控制項介紹兩個很簡單的技巧:
(一)如何實現對於過大的按比例縮小
有的同學看到這裡可能就會問縮小一副只要將image的stretch屬性設為true不就行了嗎.話隨這樣說,但是仔細想一下這樣不可能實現將一副按照相同的比例縮小.因為影象框的大小不能保證和是成比例的.那麼用什麼方法解決這個問題呢?應該用move方法解決.
其實move方法可以用在很多控制項中,甚至資料庫控制項中也有它的身影.但我只介紹一下他在本問題裡的應用.move方法既可用於image控制項又可用於picturebox控制項中.他的用法為:
物件.move left,top,width,hight
其中"對像"為要使用的控制項名,這裡可以是image1或picturebox1."left,top"分別為物件左上角在所在容器的座標,"width,hight"為物件的寬和高.現在知道了這個方法那麼實現的按比例縮小就顯得很簡單了.我們可以將放於乙個image或者picturebox中,然後用move語句設定的位置,與縮小的比例.但還需要乙個步驟,你還要求出的寬度與高度才能按照你規定的比例縮小.求的寬和高可用下面的語句: image1.picture.width, image1.picture.height.可求出他們.現在大功告成了,可以縮小了.縮小時可用下面的語句:
image1.move 4320,240,val(image1.picture.width)/3,val(image1.picture.height)/3
'4320,240為的左上座標.將縮小1/3.
(二)如何實現的拖動
上面的例子其實很簡單,但假如你想不到move的話就不那麼好辦了.下面的技巧同樣很簡單,但是要實現的拖動就不得不使用mousedown, mouseup,mousemove三個事件.現在我們先分析一下拖動的過程.首先你要用滑鼠拖動一副圖時下按下了滑鼠左鍵,這就觸發了mousedown事件.當你拖住滑鼠並移動滑鼠時就觸發了mousemove事件,拖動完畢放開左鍵時又觸發了mouseup事件.
下面我先介紹一下這三個事件:
mouseup和mousedown用法一樣
mousedown(button as integer, shift as integer, x as single, y as single)
mouseup(button as integer, shift as integer, x as single, y as single)
變數button決定滑鼠哪個鍵被按下.
1--滑鼠左鍵按下 2--滑鼠右鍵按下 4--滑鼠中鍵按下
變數shift提供滑鼠鍵按下時shift,ctrl,alt件組合的**:
no key pressed 0 shift 1
shift+ctrl 3 shift+alt 5
alt 4 alt+ctrl 6
ctrl 2 shift+ctrl+alt 7
x,y:控制項或窗體的當前位置座標--mousedown,mouseup事件觸發的水平和垂直位置.
mousemove 用法
mousemove(button as integer, shift as integer, x as single, y as single)
button,shift引數與前面的相似,這裡不再贅述.x,y為mousemove觸發時滑鼠的水平和垂直位置.下面用一段例程說明如何用這三個元素實現的拖動:
dim xp as integer
dim yp as integer
dim xz as integer
dim yx as integer
private sub image1_mousedown(button as integer, shift as integer, x as single, y as single)
button = 1
xp = x
yp = y
image1.mousepointer = 7
end sub
private sub image1_mousemove(button as integer, shift as integer, x as single, y as single)
if xp <> 0 and yp <> 0 then
image1.left = image1.left + (x - xp)
image1.top = image1.top + (y - yp)
end if
xz = image1.left
yz = image1.top
end sub
private sub image1_mouseup(button as integer, shift as integer, x as single, y as single)
button = 1
xp = yp = 0
image1.mousepointer = 0
end sub
C 中如何實現拖動PictureBox控制項
思路是這樣的.得有三個變數.記錄x座標 int xpos 記錄y座標 int ypos 記錄是否按下滑鼠 bool moveflag 在picturebox的滑鼠按下事件裡,記錄三個變數.private void picbox mousedown object sender,mouseeventar...
synchronized this 的幾個簡單示例
一 當兩個併發執行緒訪問同乙個物件object中的這個synchronized this 同步 塊時,乙個時間內只能有乙個執行緒得到執行。另乙個執行緒必須等待當前執行緒執行完這個 塊以後才能執行該 塊。二 然而,當乙個執行緒訪問object的乙個synchronized this 同步 塊時,另乙個...
幾個控制項的學習筆記
一按鈕的使能與禁止 用classwizard的member variables為按鈕定義變數,如 m button1 m button1.enablewindow true 使按鈕處於允許狀態 m button1.enablewindow false 使按鈕被禁止,並變灰顯示 二控制項的隱藏與顯示 ...