關於VB裡的ScaleMode問題

2021-09-02 19:58:26 字數 1912 閱讀 9984

我是乙個vb初學者,最近苦惱於vb的窗體和控制項的scalemode問題,vb裡預設的scalemode是twip,而往往我們希望它是pixel,雖然在屬性面板裡面能夠將scalemode改為"3-pixel",但是我發現在程式中返回某個窗體或控制項的屬性時還是返回為很大的twips值,比如有乙個picturebox控制項picmypic,那麼假如在程式中用另乙個變數iwidth來接收控制項的寬度:iwidth = picmypic.width,則它還是返回乙個很大的twip值,比如返回6100,而控制項的寬度大概只有兩百多畫素。

所以請問有沒有辦法,讓它返回乙個以畫素為單位的數值?twip和pixel之間又是如何轉換的?

設定form的scalemode=3只能使

picmypic.scalewidth為象素

picmypic.width當然為twip,因為你沒有把picmypic.salemode=3

scalex、scaley 方法

用以將 form,picturebox 或 printer 的寬度或高度值從一種 scalemode 屬性的度量單位轉換到另一種。不支援命名引數。

語法object.scalex (width, fromscale, toscale)

object.scaley (height, fromscale, toscale)

scalex 和 scaley 方法的語法包含如下部分:

部分 描述

object 可選的。乙個物件表示式,其值為「應用於」列表中的乙個物件。如果省略 object,則帶有焦點的 form 物件預設為 object。

width 必需的。為 object 指定被轉換的度量單位的數量。

height 必需的。為 object 指定被轉換的度量單位的數量。

fromscale 可選的。乙個常數或數值,按照下列設定中的描述,指定 object 的 width 或 height 從哪一種座標系統轉換。fromscale 可取的數值與 scalemode 屬性的數值加上 himetric 的新數值相同。

toscale 可選的。乙個常數或數值,按照下列「設定值」中的描述,指定 object 的 width 或 height 轉換到哪一種座標系統。toscale 可取的數值與 scalemode 屬性的數值加上 himetric 的新數值相同。

設定值用於 fromscale 和 toscale 設定值有:

常數 值 描述

vbuser 0 使用者定義:指示 object 的寬度和高度設定為自定義值。

vbtwips 1 緹(每邏輯英吋 1440 緹;每邏輯厘公尺 567 緹)。

vbpoints 2 磅(每邏輯英吋 72 點)。

vbpixels 3 畫素 (顯示器或印表機解析度的最小單位)。

vbcharacters 4 字元(水平 = 每單位 120 緹,垂直 = 每單位 240 緹)。

vbinches 5 英吋

vbmillimeters 6 公釐

vbcentimeters 7 厘公尺

vbhimetric 8 himetric。如果省略 fromscale,則 himetric 為預設值。

vbcontainerposition 9 決定控制項位置。

vbcontainersize 10 決定控制項大小。

說明scalex 和 scaley 方法按 fromscale 指定的度量單位取值(width 或 height),並將它轉換為 toscale 指定的度量單位下相應的值。

也可以結合 paintpicture 方法使用 scalex 和 scaley。

15twip=1pixel

實際上可以用screen.twipsperpixelx和screen.twipsperpixely作為係數來轉換

pixelx = twipx/screen.twipsperpixelx

pixely = twipy/screen.twipsperpixely

關於VB裡判斷邏輯的乙個說明

如上圖,當進行連續判斷的時候,即使第乙個已經不符合條件了,後面的依然會計算.這點一定要記住,除非你所有的函式都有必要執行,否則會導致效率降低.減 不一定能提高效率,對於iif和連續判斷寫法,貌似很多人都不知道funca,funcb,funcc都會執行 如下,有興趣的可以去試試 or 是否也像 and...

關於vb中的容器

最失敗的事情莫過於,用了十來年的vb,忽然發現,原來自己還沒有搞懂一些最簡單的東西.昨天,第一次試用了一下vb的類的繼承,感覺還不賴。今天,開始琢磨一下很久以來一直困擾我的乙個問題,就是在vb中找乙個比較好的的容器。其實我的要求很低,想c 中的arraylist就行了,能夠靈活的加入,能夠遍歷,即可...

VB中關於while wend的使用

設a b都是自然數,為求a除以b的餘數,某人編寫了以下函式 function fun a as integer,b as integer while a b a a b wend fun a end function 在除錯時發現函式是錯誤的。為使函式能產生正確的返回值,應做的修改是 a 把a a ...