在vb6中,畫直線有兩種途徑
line方法,就是在**中用line(x1,y1)-(x2,y2)直接畫線
這種方式看似簡單,但也容易出錯
「line方法可以用來在窗體上繪製直線,但是如果窗體的autoredraw屬性設定為false,則line方法必須通過refresh方法才能顯示出來。」
鏈結中的問題,原因在於此。但是這個結論不能機械的套用,有不成立的時候。當然為了避免出問題,還是按照原則來寫**保險。
line控制項,比用label模擬直線好的多。它可以畫斜線
比較其他vb6控制項可以用move來移動,而line控制項沒有move,但可以用直線兩個端點的兩對(x,y)座標設定,來改變(動態)位置、長短
line控制項應用
1.功能
line控制項是圖形控制項,該控制項主要用於修飾窗體和顯示直線。可以在窗體或其他容器控制項中畫出水平線、垂直線或者對角線。
line控制項和line方法都可以用來在窗體上繪製直線,但是如果窗體的autoredraw屬性設定為false,則line方法必須通過refresh方法才能顯示出來。而line控制項總是能夠顯示在窗體上,除非將visible屬性設定為false。 2.
屬性 line控制項不具有move方法,但是可以通過改變x1、x2,y1,y2屬性來移動直線或者調整直線的大小。另外borderstyle屬性可以設定直線的樣式, borderwidth屬性可以改變線條的粗細。
x1、x2,y1,y2屬性返回或設定line控制項的起始點(x1,y1)和終止點(x2,y2)的座標。水平座標是x1和x2,垂直座標是y1和y2。
語法:object.x1 [= value]
object.y1 [= value]
object.x2 [= value]
object.y2 [= value]
object:物件表示式。
value:乙個用來指定座標的數值表示式。
示例:運用x1、y1、x2、y2屬性可以定位一條線段的位置,其中x1、y1是起始點;x2、y2是終止點,而x1和x2是水平座標;y1和y2是垂直座標。本示例實現的是在窗體啟動的時候通過分別設定line控制項的x1、y1、x2、y2屬性,來定位line控制項的位置,如圖1所示。
圖1 定義線段的位置
完整程式**如下:
'畫出兩個固定座標間的線
private sub form_load()
with line1 '復用語句
.x1 = 700: .x2 = 1800: .y1 = 1300: .y2 = 600 '設定座標
end with
end sub
應用一:繪製正方形
例項說明
在多**教學中經常需要繪製幾何圖形,本例項演示的是動態地繪製乙個正方形圖案。執行程式,系統將自動繪製乙個正方形,效果如圖2所示。
思路與技術
通過在timer控制項中動態地控制line控制項的x1、y1、x2和y2屬性來控制繪製正方形的各邊長,實現動態繪製正方形的功能。
line控制項的x1、y1、x2和y2屬性返回或設定line控制項的起始點(x1, y1)和終止點(x2, y2)的座標。控制項的水平座標是x1和x2,垂直座標是y1和y2。
語法格式如下:
object.x1 [= value]
object.y1 [= value]
object.x2 [= value]
object.y2 [= value]
引數說明:
object 物件表示式。
value 乙個用來指定座標的數值表示式。
開發步驟
(1)新建乙個標準工程,建立乙個新窗體。
(2)在窗體上新增4個line控制項,設定其visible屬性為false。
form1窗體中控制項部分屬性設定如表1所示。
表1 form1窗體中控制項部分屬性設定
控制項名 屬性
值line
name
line1
visible
false
line
name
line2
visible
false
line
name
line3
visible
false
line
name
line4
visible
false
timer
name
timer1
(3)為form1窗體新增如下**。
'繪製正方形
private sub timer1_timer()
line1.visible = true 'line1可見
line1.x1 = 360 '設定line1起點橫座標
line1.y1 = 360 '設定line1起點縱座標
line1.y2 = 360 '設定line1終點縱座標
if line1.x2 > 2280 then '當line1終點橫座標大於2280
line2.visible = true 'line2可見
line2.x1 = 2280 ' line2的起點橫座標
line2.x2 = 2280 ' line2的起點橫座標
line2.y1 = 360 ' line2的終點縱座標
if line2.y2 > 2280 then '當line2終點縱座標大於2280
line3.visible = true 'line3可見
line3.x1 = 2280 '設定line3起點橫座標
line3.y1 = 2280 '設定line3起點縱座標
line3.y2 = 2280 '設定line3終點縱座標
if line3.x2 < 360 then '當line2終點橫座標小於360
line4.visible = true 'line4可見
line4.x1 = 360 'line4起點橫座標
line4.y2 = 2280 ''line4終點縱座標
if line4.y1 <= 360 then 'line4終點縱座標小於等於360
timer1.enabled = false 'timer停用
else
line4.y1 = line4.y1 – 20 'line4的終點縱座標減20
end if
else
line3.x2 = line3.x2 - 20 'line3的起點橫座標減20
end if
else
line2.y2 = line2.y2 + 20 'line2的終點縱座標加20
end if
else
line1.x2 = line1.x2 + 20 'line1的終點橫座標加20
end if
end sub
應用二:利用line控制項設計分割線
在進行窗體設計時,經常使用frame控制項來將資訊分門別類,這裡介紹利用2個line控制項設計的分隔線,將兩個line控制項設定為不同的顏色,顯示時錯開一些位置。
最終效果如圖3所示。
程式**如下: ★★★★★ form1 ★★★★★★
設計分割線
private sub form_load()
with line1 '復用語句
.bordercolor = &h808080 '設定line1的背景顏色
.x1 = 0: .x2 = 5000 '設定line1的起點和終點的橫座標
.y1 = 1100: .y2 = 1100 '設定line1的起點和終點的縱座標
end with
with line2 '復用語句
.bordercolor = vbwhite '設定line2的背景顏色為白色
.borderwidth = 2 '設定邊框寬度
.x1 = line1.x1: .x2 = line1.x2 '設定line2的起點和終點橫座標與line1相同
'設定line2的起點和終點縱座標
.y1 = line1.y1 + 20: .y2 = line1.y1 + 20
end with
line1.zorder 0 '置於圖層前端
end sub
應用三:在執行中改動line控制項
在執行中可以改動控制項,而line控制項沒有move過程來移動它。但是可以通過改變它的x1,y1,x2,y2屬性來移動或變換它的尺寸。
舉例:在窗體中以任意長短和位置新增四個line控制項,並用控制項陣列linecontrol(0)到linecontrol(3)表示。當使用者單擊command1時,迴圈地遍歷這四條線並使它們呈水平排列。
private sub command1_click()
dim intloopindex as integer
for intloopindex = 0 to 3
linecontrol(intloopindex).x1 = 1000
linecontrol(intloopindex).x2 = 3500
linecontrol(intloopindex).y1 = 1000 + 100 * intloopindex
linecontrol(intloopindex).y2 = linecontrol(intloopindex).y1
next
end sub
error 和 line 使用分析
1 error的用法 error用於生成 個編譯錯誤訊息 用法 error message message不需要用雙引號包圍 error編譯指示字用於自定義程式設計師特有的編譯錯誤訊息 類似的,warning用於生成編譯警告。error是一種預編譯器指示字 error可用於提示編譯條件是否滿足 編譯...
error和 line使用分析
error編譯指示字用於自定義程式設計師特有的編譯錯誤,訊息類似的 warning用於生成編譯警告 error是一種預編譯器指示字 error可用於提示編譯條件是否滿足 編譯過程中的任意錯誤資訊意味著無法生成最終的可執行程式 例子1 error預處理初探 include ifndef cpluspl...
查詢子控制項和父控制項方法
一 查詢某種型別的子控制項,並返回乙個list集合 public listgetchildobjects dependencyobject obj,type typename where t frameworkelement childlist.addrange getchildobjects ch...