繪圖文件介面模組

取得字串寬度
在常用物件中填色
繪製進階橢圓
繪製任意角度字型
取得字串高度
判斷兩物件是否有重疊部分
繪製多邊形

取得字串寬度

函數:GetStringWidthPixel ,傳回字串寬度的點數

引數 型態 說明
hDC Long 裝置代號
hString String 字串內容

範例:

Debug.Print GetStringWidthPixel(Me.hDC, "中文測試")

注意:在 Form 、 PictureBox 或 Printer 用 TextWidth 比較方便,其關係式如下 (.ScaleMode= 1)

Me.TextWidth("中文測試") = GetStringWidthPixel(Me.hDC, "中文測試") * Screen.TwipsPerPixelX

取得字串高度

函數:GetStringHeightPixel ,傳回字串高度的點數

引數 型態 說明
hDC Long 裝置代號
hString String 字串內容

範例:

Debug.Print GetStringHeightPixel(Me.hDC, "中文測試")

注意:在 Form 、 PictureBox 或 Printer 用 TextHeight 比較方便,其關係式如下 (.ScaleMode= 1)

Me.TextHeight("中文測試") = GetStringHeightPixel(Me.hDC, "中文測試") * Screen.TwipsPerPixelY

在常用物件中填色

函數:myObjectFloodFill

引數 型態 說明
hObj Object 物件名稱,如 Form、PictureBox 或 Printer
X Single X 座標
Y Single Y 座標
FillColor Long 填色
wFillType Long 填滿方式,預設為 FLOODFILLSURFACE

範例:

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

summy = myObjectFloodFill(Form1, X, Y, Int(Rnd * &H1000000))

End Sub

判斷兩物件是否有重疊部分

函數:IsObjIntersectRect ,若有重疊部分則傳回是,否則傳回否,物件應有 Left , Top , Width , Height 等屬性,若無相對應屬性,則無法判斷亦傳回否

引數 型態 說明
hObj1 Object 物件變數1
hObj2 Object 物件變數2

說明:

兩矩形交集演算法可在相關的計算圖學相關參考書籍找到,本網頁僅介紹透過 Windows API 如何處理,不對計算圖學在矩形交集快速演算法多做介紹

範例:

Debug.Print IsObjIntersectRect(Picture1, Text1)
Debug.Print IsObjIntersectRect(Command1, Text1)

繪製進階橢圓

函數:VBEllipseEx

引數 型態 說明
stdPic Object 標準繪圖物件,如  Form、PictureBox 或 Printer
myPoint cPoint 點物件或點型態陣列
hForeColor Long 前景色,或說橢圓顏色
hFillColor Long 背景色,或說填滿顏色

說明:

在 VB 中可以採用 Circle 方法繪製橢圓,然 Circle 僅能繪製正交於直角座標系之橢圓,無法繪製傾斜的橢圓,本網頁循 PowerPoint 及 Visio 等軟體繪製方式,以 PolyBezier 這個 API 繪製,本函數之子函數與其他函數共用,目前尚未有足夠的空檔整理,暫不說明,另本函數每組均有三個子函數,分別為 WMF/EMF 及標準繪圖物件使用,目前僅介紹標準繪圖物件採用之函數供參考

範例:

Public Type cPoint ' 可自行定義物件類別或使用者自訂型態

X As Double ' x 座標
Y As Double ' y 座標

End Type

Private Sub Form_DblClick()

ReDim tp(1 To 4) As cPoint

tp(1).X = 0: tp(1).Y = 3000
tp(2).X = 4000: tp(2).Y = 0
tp(3).X = 6000: tp(3).Y = 1500
tp(4).X = 2000: tp(4).Y = 4500

VBEllipseEx Me, tp(), QBColor(1), QBColor(3)

End Sub

設定橢圓外框座標

執行繪圖成果

註:本函式使用繪圖函式庫基本函數及設定頗多,若有缺漏導致不能執行,敬請告知

繪製多邊形

函數:VBPolygon

引數 型態 說明
stdPic Object 標準繪圖物件,如  Form、PictureBox 或 Printer
myPoint cPoint 點物件或點型態陣列
hForeColor Long 前景色,或說橢圓顏色
hFillColor Long 背景色,或說填滿顏色

說明:

在 VB 中並未包裝多邊形相關繪製函數,但多邊形繪製屬 FAQ 級的問題,各相關資列均有列示,本網頁原不擬展示範例,由於網友需求,故展示個人採用之方法,本函數之子函數與其他函數共用,目前尚未有足夠的空檔整理,暫不說明,另本函數每組均有三個子函數,分別為 WMF/EMF 及標準繪圖物件使用,目前僅介紹標準繪圖物件採用之函數供參考

範例:

Public Type cPoint ' 可自行定義物件類別或使用者自訂型態

X As Double ' x 座標
Y As Double ' y 座標

End Type

Private Sub Form_DblClick()

ReDim tp(1 To 5) As cPoint

tp(1).x = 0: tp(1).y = 3000
tp(2).x = 4000: tp(2).y = 0
tp(3).x = 6000: tp(3).y = 1500
tp(4).x = 5000: tp(4).y = 3500
tp(5).x = 2000: tp(5).y = 4500

VBPolygon Me, tp(), QBColor(12), QBColor(2)

End Sub

執行繪圖成果

註:本函式使用繪圖函式庫基本函數及設定頗多,若有缺漏導致不能執行,敬請告知

繪製任意角度字型

函數:VBTextOut

引數 型態 說明
stdPic Object 標準繪圖物件,如  Form、PictureBox 或 Printer
hString String 輸出字串內容
x Varinat 輸出位置,針對該物件之 x 座標
y Varinat 輸出位置,針對該物件之 y 座標
hAngle Varinat 可省略,文字角度,以 360 度為單位,最小解析度為 0.1 度
taFlags Long 可省略,文字對齊方式

說明:

在 VB 中並未包裝任意角度字型輸出相關繪製函數,但任意角度字型輸出繪製屬 FAQ 級的問題,各相關資列均有列示,本網頁原不擬展示範例,由於網友需求,故展示個人採用之方法,本函數之子函數與其他函數共用,目前尚未有足夠的空檔整理,暫不說明,另本函數每組均有三個子函數,分別為 WMF/EMF 及標準繪圖物件使用,目前僅介紹標準繪圖物件採用之函數供參考

範例:

Private Sub Form_Click()

baseX = 1000
baseY = 1000

VBTextOut Form1, "Basic, 培基語言!", baseX - 800, baseY - 500, 90, TA_RIGHT
VBTextOut Form1, "Basic, 培基語言!", baseX, baseY, 180, TA_CENTER + TA_BASELINE
VBTextOut Form1, "Basic, 培基語言!", baseX - 100, baseY - 100, 135

Form1.Line (baseX - 25, baseY - 25)-(baseX + 25, baseY + 25), vbRed, B

End Sub

圖中,方塊為參考對齊旗標設定之用。

註:本函式使用繪圖函式庫基本函數及設定頗多,若有缺漏導致不能執行,敬請告知