顶部左侧内容
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 在线教程 > 正文

vb.net透明窗体和不规则窗体(vb如何设置透明窗体)

gosiye 2024-08-20 14:08 8 浏览 0 评论

在vb.net的窗体属性中,有个属性叫TransparencyKey,它能决定在窗体上,哪种颜色所在的区域透明。

注意:TransparencyKey属性对窗体标题栏和外框无效。

如果我们想让窗体透明,如果你的窗体背景颜色是默认的,只要在窗体的Load事件加入一句代码就行:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.TransparencyKey = SystemColors.Control
    End Sub

运行后,你会发现窗体除标题栏和外框都透明了。

如果你的窗体背景色是别的颜色,比如是红色,就将代码

Me.TransparencyKey = SystemColors.Control

改成:

Me.TransparencyKey = Color.Red

这么看来,建立一个透明窗体看来是很容易的一件事。但窗体透明有什么用呢?我首先想到就是做一个不规则的窗体。

我是这样设想的:

  1. 设置好窗体样式属性,去除窗体标题栏和外框
  2. 在窗体建立一个Picture控件并导入图片,这个图片需要透明的部分的RBG值为(255, 0, 255)
  3. 窗体的TransparencyKey设置为Color.FromArgb(255, 0, 255)
  4. 设置Picture的SizeMode属性 = PictureBoxSizeMode.AutoSiz
  5. 设置Picture的位置为(0,0),设置窗体的宽度和高度分别是图片的宽度和高度

我准备的图片是一个小黑狗,狗周围的颜色值=Color.FromArgb(255, 0, 255) 。如下图。

我这个黑狗图片在我的电脑路径是: d:\test\1.png

代码如下:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        PictureBox1.ImageLocation = "d:\test\1.png"  '设置图片
        Me.FormBorderStyle = FormBorderStyle.None '设置窗体的无标题栏,无边框样式
        PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize '让图片控件尺寸随图片大小自动变化
        PictureBox1.Location = New Point(0, 0)

        Me.TransparencyKey = Color.FromArgb(255, 0, 255) '设置窗体需要透明的颜色

    End Sub

    Private Sub PictureBox1_SizeChanged(sender As Object, e As EventArgs) Handles PictureBox1.SizeChanged
        '让窗体跟图片框尺寸一样大小
        Me.Width = PictureBox1.Width
        Me.Height = PictureBox1.Height
    End Sub

    Private Sub PictureBox1_DoubleClick(sender As Object, e As EventArgs) Handles PictureBox1.DoubleClick
        Close()
    End Sub

按F5测试运行,窗体上就会出现一条小黑狗,一个不规则的窗体就根据这个黑狗的图片就成功生成了。鼠标双击这个黑狗就可以关闭程序,只可惜不能用鼠标移动这只黑狗。

我们再导入相应API,再加上PictureBox1的鼠标移动事件,就可以实现用鼠标移动这条小狗,全部代码如下:

Public Class Form1
    '以下是移动无标题栏窗体
    Declare Auto Function ReleaseCapture Lib "user32.dll" Alias "ReleaseCapture" () As Boolean
    'API ReleaseCapture函数是用来释放鼠标捕获的
    Declare Auto Function SendMessage Lib "user32.dll" Alias "SendMessage" (ByVal hWnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As IntPtr
    '向windows发送消息
    Public Const WM_SYSCOMMAND As Integer = &H112&
    Public Const SC_MOVE As Integer = &HF010&
    Public Const HTCAPTION As Integer = &H2&
    '以上是移动无标题栏窗体

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        PictureBox1.ImageLocation = "d:\test\1.png"  '设置图片
        Me.FormBorderStyle = FormBorderStyle.None '设置窗体的无标题栏,无边框样式
        PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize '让图片控件尺寸随图片大小自动变化
        PictureBox1.Location = New Point(0, 0)

        Me.TransparencyKey = Color.FromArgb(255, 0, 255) '设置窗体需要透明的颜色

    End Sub

    Private Sub PictureBox1_SizeChanged(sender As Object, e As EventArgs) Handles PictureBox1.SizeChanged
        '让窗体跟图片框尺寸一样大小
        Me.Width = PictureBox1.Width
        Me.Height = PictureBox1.Height
    End Sub

    Private Sub PictureBox1_DoubleClick(sender As Object, e As EventArgs) Handles PictureBox1.DoubleClick
        Close()
    End Sub

    Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
        If e.Button = MouseButtons.Left Then '移动无标题栏窗体
            ReleaseCapture()
            SendMessage(Me.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0)
        End If
    End Sub
End Class

以上代码在 visual studio 2022 测试成功。运行结果就是出现下面这只小黑狗。

相关推荐

全球最大的H5网站模板库(h5页面模板下载)

当今社会,互联网迅猛发展,在网络营销中,客户往往通过企业的网站建设留下对该企业的第一印象,一个优秀的企业网站已成为企业发展的重要纽带,嗨创H5,拥有国内外一流的技术团队,潜心专研网站建设6年,是全球最...

wordpress集团公司网站模板:XSgr(wordpress建站公司)

小兽wordpress推出一款高端集团公司主题,打造高品质官网。高端是一种态度和坚持,因为我坚信贴合产品及品牌理念的高端深度定制才能最大化地呈现企业的务实严谨与产品的专业品质相比,某种程度上讲–...

私心推荐,小编酷爱的五款高逼格网站模板

建站宝盒的网站模板上千套之多,各有各的风格色彩,但是,弱水三千,小编我却只取一瓢饮,在这上千套模板之中,小编酷爱的网站模板有五套,让小编私心推荐一下吧!1、茶叶贸易公司网站模板小编对这款网站模板可是一...

「书讯」政府网站用户行为研究与应用

《政府网站用户行为研究与应用》作者:刘合翔著出版日期:2018年6月开本:16开出版社:经济管理出版社小编推荐《政府网站用户行为研究与应用》的主题是关于政府网站用户行为的特征规律及其在政府网站优...

免费服务器-搭建模板网站的操作流程(图文版)

之前发文《创业者的官网:如何搭建免费云服务器及操作面板(图文版)》,因为做了视频才发现,创业者对视频的需求,远远低于对图文解说的需求。因此,补充图文教程,不清楚的看官们,可以直接看视频版本进行细部学...

快收藏这些高逼格H5网站模板吧,不绕弯子直接下载

上面这些响应式H5网站是不是很炫酷,比起那些“在线一键生成”是不是好太多了?关键是,那些一键制作都不会开放源码给你,自定义性也很局限。不过说到底还是难看。今天笔者推荐大家一个模板网站,全都是高质量的响...

如何开发网站建设管理系统模板(如何开发网站建设管理系统模板图片)

根据用户网站需求文档设计美工图,并设计数据库结构,让网站开发人员可以更多地关注前台美工,先对照美工图,编写静态HTML页面,按网站建设管理系统模板语法,修改编写好的静态HTML页面,运行。不再需要对...

C语言的数据类型介绍(c语言的数据类型介绍是什么)

在计算机系统中,数据是放在内存中的,数字、文字、符号、图形、音频、视频等数据都是以二进制形式存储在内存中的,它们并没有本质上的区别,那么0001000该理解为数字8呢,还是图像中某个像素的颜色...

C 语言格式化输出函数中常用的格式符号

在之前介绍输入输出函数的文章中,有提到格式化输入输出函数都有包含一种特殊的符号——格式符号。那篇文章中关于格式符号也只是一笔带过,没有进行深入挖掘。本篇文章主要对输出函数(printf)中的一些常用格...

C#中的类型转换(c#数据转换类)

计算机存储的基本单位:字节我们知道一个字节(Byte)有8个比特(bit)构成,比特是存储的最小单位,表示0和1,但为什么计算机存储的基本单位是字节,而不是比特呢?假设我们要存储数字3(二进制:11...

Java8中String内存空间占用分析(电脑里下载的文件怎样删除才不会占用内存空间)

1.前言分析之前,简单回顾一下对象的内存分布。在HotSpot虚拟机中,对象在堆内存中的存储布局可以划分为三部分:对象头、实例数据和对齐填充。对象头包含两部分内容:MarkWord和类型指针。实例数据...

「每日C语言」数据类型大小和取值范围

对于c语言来说,数据类型是一个很重要的概念和知识点,它涉及到的是内存的空间,这在和硬件交互的时候是非常重要的。K&R给出了7个数据类型相关的关键字,分别是:int、long、short、uns...

【c语言学习笔记】数据类型(c语言里面的数据类型)

c语言学习笔记,欢迎大家能在评论区提出我学习错误的地方方便我进行改正~在计算机中,计算机用二进制来储存数据,在c语言中有许多的数据类型用来存储数据,当然不同的数据类型所用的内存占用也不一样,下面就来用...

关于MySQL varchar类型最大值,原来一直都理解错了

我是架构精进之路,点击上方“关注”,坚持每天为你分享技术干货,私信我回复“01”,送你一份程序员成长进阶大礼包。写在前面关于MySQLvarchar字段类型的最大值计算,也许我们一直都理解错误了,...

C语言数据类型的转换(c语言数据类型的转换方式)

类型转换在C语言程序中,经常需要对不同类型的数据进行运算,为了解决数据类型不一致的问题,需要对数据的类型进行转换。例如一个浮点数和一个整数相加,必须先将两个数转换成同一类型。C语言程序中的类型...

取消回复欢迎 发表评论: