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小程式不理解,向行家求教,一個VB小程式不理解,向行家求教
問題一 這裡有三個for i 用的是同一個字元 i 這三個i,有什麼關聯嗎?答 沒有關聯 問題二 第一個迴圈結束,應該是a i 1,2,3 4 5 6 7 8 9 10.這十個陣列成的陣列,是嗎?第二個迴圈結束,p i 1,4,9.這三個陣列成的陣列,對嗎?答 對的 問題三 第三個for迴圈中,k ...
微信刑序有哪些微信刑序大全,微信小程式有哪些 微信小程式大全
美團外賣 滴滴公交查詢 車來了大眾點評 京東購物 摩拜單車 滴滴出行didi 攜程酒店機票火車票 程式有哪些 好玩的微信小程式大全介紹 好玩的小程式還真挺多的,容易上手的就是小遊戲,推薦一些好玩的給你 跳一跳 燃燒頭腦 歡樂六邊形 彈球王者 大家來找茬 歡樂坦克大戰。其他的遊戲,可以在小程式裡直接搜...
如何讓微信刑序連結,如何讓微信小程式連結websocket
這個提示就是 埠衝突.朝這個方向去找問題.至於具體的解決辦法,不好意思,我只懂程式.如何讓微信小程式連結websocket 使用goeasy,你無需搭建websocket伺服器,通過goeasy提供的介面,你可以很方便 快捷的將資訊傳送到任何你的客戶端。具體的使用方法在下面 獲取 goeasy sd...