1樓:匿名使用者
private withevents timer1 as timer
dim r&, r1&, t&, a1!, a2!, xb!, yb!, s!, b#
private sub form_load()
me.width = 4500: me.height = 4500
me.move (screen.width - me.width) \ 2, (screen.height - me.height) \ 2
me.autoredraw = true
me.caption = "cbm666的萬花筒"
set timer1 = controls.add("vb.timer", "timer1")
timer1.interval = 10
end sub
private sub timer1_timer()
randomize
r = 340 * rnd
if r <> 0 then
r1 = 500
s = r * rnd
b = rgb(256 * rnd, 256 * rnd, 256 * rnd)
for t = 1 to 10000
a1 = t * 3.1415926 / 180
a2 = (r1 / r) * a1
xb = 500 + (-(r1 - r) * cos(a1) - s * cos(a2 - a1) + 420) * 4
yb = 500 + ((r1 - r) * sin(a1) - s * sin(a2 - a1) + 380) * 4
me.pset (xb, yb), b
next t
end if
end sub
2樓:白方危英媛
vb製作奇形怪狀的窗體
普通的窗體都是方方的,使用api函式可以做出一些奇怪的形狀。比如,窗體是圓角矩形,在中間挖一個橢圓形的洞。
先要理解一個重要的概念:區域。區域是描述裝置場景中某一塊的gdi物件,每個區域都有一個控制代碼。
一個區域可以是矩形,也可以是複雜的多邊形,甚至是幾個區域組織在一起。窗體預設的區域就是我們看到的矩形,當然它並非一定要用這個預設的區域
現在開始,首先在窗體上做一個圓角矩形區域,這是窗體的大致輪廓。在圓角矩形裡再確定一個橢圓形的區域,然後把這兩個區域組織成一個區域,並設定窗體的區域為這個組織出來的區域。
createroundrectrgn函式用於建立一個圓角矩形區域;createellipticrgn用於建立一個橢圓區域;combinergn函式用於將兩個區域組合為一個新區域;setwindowrgn函式允許您改變視窗的區域。使用其他的函式還可以做出其他更奇怪的窗體。
源**如下:
optionexplicit
'api函式宣告
privatedeclarefunctioncreaterectrgnlib"gdi32"(byvalx1aslong,byvaly1aslong,byvalx2aslong,byvaly2aslong)aslong
privatedeclarefunctioncreateroundrectrgnlib"gdi32"(byvalx1aslong,byvaly1aslong,byvalx2aslong,byvaly2aslong,byvalx3aslong,byvaly3aslong)aslong
privatedeclarefunctioncreateellipticrgnlib"gdi32"(byvalx1aslong,byvaly1aslong,byvalx2aslong,byvaly2aslong)aslong
privatedeclarefunctioncombinergnlib"gdi32"(byvalhdestrgnaslong,byvalhsrcrgn1aslong,byvalhsrcrgn2aslong,byvalncombinemodeaslong)aslong
privatedeclarefunctionsetwindowrgnlib"user32"(byvalhwndaslong,byvalhrgnaslong,byvalbredrawasboolean)aslong
privatedeclarefunctiondeleteobjectlib"gdi32"(byvalhobjectaslong)aslong
'常數宣告
privateconstrgn_diff=4
'目標區域被設定為兩個區域不相交的部分
'模組級變數宣告
privateoutrgnaslong
'外邊的圓角矩形區域
privateinrgnaslong
'裡邊的橢圓區域
privatemyrgnaslong
'圓角區域剪下掉橢圓區域後的區域,也是窗體最終的形狀
privatesubform_click()
ifoutrgn<>0andinrgn<>0andmyrgn<>0thenexitsub
dimwaslong,haslong
w=scalex(form1.width,vbtwips,vbpixels)
h=scaley(form1.height,vbtwips,vbpixels)
myrgn=createrectrgn(0,0,0,0)
outrgn=createroundrectrgn(30,30,w-30,h-30,100,100)
inrgn=createellipticrgn(100,100,w-100,h-100)
callcombinergn(myrgn,outrgn,inrgn,rgn_diff)
callsetwindowrgn(form1.hwnd,myrgn,true)
form1.backcolor=qbcolor(4)
endsub
privatesubform_dblclick()
unloadform1
endsub
privatesubform_load()
outrgn=0
inrgn=0
myrgn=0
form1.width=7800
form1.height=6000
endsub
privatesubform_unload(cancelasinteger)
ifmyrgn<>0thendeleteobjectmyrgn
ifoutrgn<>0thendeleteobjectoutrgn
ifinrgn<>0thendeleteobjectinrgn
endsub
這個程式執行後,在窗體上單擊,窗體就會變形,雙擊窗體程式結束。要注意的是,在解除安裝窗體時,用deleteobject函式刪除已定義的區域。
vb和vbscript區別,vb和vbscript區別是什麼
vb是以basic為基準的微軟開發的語言程式設計整合開發環境 ide 用於windows系統下的應用檔案開發。vbsript是asp使用的指令碼語言,用於開發動態網頁,兩者在語法上相似,但本質卻不同。 vb是開發應用程式的。vb是嵌入到html中實現一些網頁特定功能的兩者語法有一定聯絡,但具體功能完...
VB陣列操作,VB怎麼宣告陣列
能你的例子 希望對你有幫助 dim a 3 as integer dim i as integer a 0 1 a 1 2 a 2 3 a 3 4 for i o to 3 text1.text text1.text a i next i vb怎麼宣告陣列 如果有規律就可以用for next 來賦值...
VB密碼讀取,vb做個密碼輸入
你實現學習一下vb和access資料庫的連線,問題就十分簡單了。用vb怎樣把輸入的密碼變成星號 顯示出來?只要將textbox設定屬性parrwordchar為 即可,如 textbox元件使用雖然比較簡單,但textbox類的構成成員卻是非常的豐富。在一般性的程式設計中,主要涉及到三類 屬性 方法...