PictureBox控制項幾個簡單屬性

2021-04-14 22:12:05 字數 3106 閱讀 3974

影象框(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 使按鈕被禁止,並變灰顯示 二控制項的隱藏與顯示 ...