永发信息网

怎么用vb制作圆形窗体?

答案:2  悬赏:0  手机版
解决时间 2021-05-01 23:28
怎么用vb制作圆形窗体?
最佳答案

这是代码:


Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, _
    ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
   
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, _
    ByVal hRgn As Long, ByVal bRedraw As Long) As Long


Private Sub Form_Load()
  Dim a, b As Long
  Dim w, h As Long
  w = Form1.Width / Screen.TwipsPerPixelX
  h = Form1.Height / Screen.TwipsPerPixelY
  a = CreateEllipticRgn(0, 0, w, h)
  b = SetWindowRgn(Me.hWnd, a, True)    '设置椭圆形窗体
End Sub
Private Sub Form_Activate()
  Picture1(0).Visible = True
End Sub


Private Sub Label1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
    Picture1(0).Visible = False
    Picture1(1).Visible = False
    Picture1(2).Visible = False
    Picture1(3).Visible = False
  Select Case Index
    Case Is = 0
    Picture1(0).Visible = True    '鼠标所在位置图形突起
    Case Is = 1
    Picture1(1).Visible = True    '鼠标所在位置图形突起
    Case Is = 2
    Picture1(2).Visible = True    '鼠标所在位置图形突起
    Case Is = 3
    Picture1(3).Visible = True    '鼠标所在位置图形突起
  End Select
End Sub


Private Sub Picture1_Click(Index As Integer)
  End
End Sub

全部回答

呵呵 代码多了点

Option   Explicit Public   Declare   Function   SetWindowRgn   Lib   "user32 "   (ByVal   hWnd   As   Long,   ByVal   hRgn   As   Long,   ByVal   bRedraw   As   Boolean)   As   Long Public   Declare   Function   CreateRectRgn   Lib   "gdi32 "   (ByVal   X1   As   Long,   ByVal   Y1   As   Long,   ByVal   X2   As   Long,   ByVal   Y2   As   Long)   As   Long Public   Declare   Function   DeleteObject   Lib   "gdi32 "   (ByVal   hObject   As   Long)   As   Long Public   Declare   Function   GetPixel   Lib   "gdi32 "   (ByVal   hdc   As   Long,   ByVal   X   As   Long,   ByVal   Y   As   Long)   As   Long Public   Declare   Function   CombineRgn   Lib   "gdi32 "   (ByVal   hDestRgn   As   Long,   ByVal   hSrcRgn1   As   Long,   ByVal   hSrcRgn2   As   Long,   ByVal   nCombineMode   As   Long)   As   Long Private   Declare   Function   ReleaseCapture   Lib   "user32 "   ()   As   Long Private   Declare   Function   SendMessage   Lib   "user32 "   Alias   "SendMessageA "   (ByVal   hWnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   lParam   As   Any)   As   Long Public   Const   RGN_OR   =   2 Private   Const   WM_MOVE   =   &HF012 Private   Const   WM_SYSCOMMAND   =   &H112 '图形窗体函数 'Form1:窗体名称 'picSource:装载图形的PictureBox控件名称 'lngTransColor:要屏蔽掉的颜色,缺省为picSource的(1,1)处的颜色值 Public   Function   RegionFromBitmap(Form1   As   Form,   picSource   As   PictureBox,   Optional   lngTransColor   As   Long)   As   Long     Dim   lngRetr   As   Long,   lngHeight   As   Long,   lngWidth   As   Long     Dim   lngRgnFinal   As   Long,   lngRgnTmp   As   Long     Dim   lngStart   As   Long,   lngRow   As   Long     Dim   lngCol   As   Long     If   lngTransColor&   <   1   Then         lngTransColor&   =   GetPixel(picSource.hdc,   1,   1)     End   If     lngHeight&   =   picSource.Height   /   Screen.TwipsPerPixelY     lngWidth&   =   picSource.Width   /   Screen.TwipsPerPixelX     lngRgnFinal&   =   CreateRectRgn(0,   0,   0,   0)     For   lngRow&   =   0   To   lngHeight&   -   1         lngCol&   =   0         Do   While   lngCol&   <   lngWidth&             Do   While   lngCol&   <   lngWidth&   And   GetPixel(picSource.hdc,   lngCol&,   lngRow&)   =   lngTransColor&                 lngCol&   =   lngCol&   +   1             Loop             If   lngCol&   <   lngWidth&   Then                 lngStart&   =   lngCol&                 Do   While   lngCol&   <   lngWidth&   And   GetPixel(picSource.hdc,   lngCol&,   lngRow&)   <>   lngTransColor&                     lngCol&   =   lngCol&   +   1                 Loop                 If   lngCol&   >   lngWidth&   Then   lngCol&   =   lngWidth&                 lngRgnTmp&   =   CreateRectRgn(lngStart&,   lngRow&,   lngCol&,   lngRow&   +   1)                 lngRetr&   =   CombineRgn(lngRgnFinal&,   lngRgnFinal&,   lngRgnTmp&,   RGN_OR)                 DeleteObject   (lngRgnTmp&)             End   If         Loop     Next     RegionFromBitmap&   =   SetWindowRgn(Form1.hWnd,   lngRgnFinal&,   True) End   Function '移动窗体 Public   Function   FormMove(FormhWnd   As   Long)         Call   ReleaseCapture         Call   SendMessage(FormhWnd,   WM_SYSCOMMAND,   WM_MOVE,   0) End   Function

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
双子座、水瓶座.的出生时间是????
qq空间fd模块怎么设置全屏的.我截图给你看看.
狗狗白胸膛是什么意思
磁盘内存不足怎么办,电视机内存不够怎么办
1012年是不是要实行十二年义务教育?
诛仙逍遥扇和落魂灯价钱各是多少?
大连金石文化旅游产业园区管委会在哪里啊,我
cf的vip要多少一月?
QQ三国这个BB适合XS吗?值多少钱?
有什么方法可以瘦大腿的吗?
妆容的因不同季节应如何进行色彩搭配
感谢幼儿园老师的语句,感谢幼儿园的句子
为什么我的电脑会出现指示器 应用程序正在进
我的电脑系统很老了 怎么把他装成2009版的
我充的DNF点怎么没有充上呀 谢谢
推荐资讯
oppo手机的广告什么时候出来
请问法语与西班牙语.日语在国内就业市场上哪
数学一道难题!
目前最好的国产手机,是那个品牌。
长辈祝晚辈生日祝福语,老人家过生日祝福语
亚公顶森林公园怎么去啊,有知道地址的么
电脑安装了这么不能玩啊,打开就出现下面这个
有李小龙 还有冷冻 还有四手怪的那街机游戏叫
CF怎么连跳箱子
英语 Bill ___(not know)your brother
三星移动硬盘从性价比考虑,要160G的还是要32
电脑洗车这个工作具体都干什么?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?