前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VB.NET 实现LED效果源码

VB.NET 实现LED效果源码

作者头像
一线编程
发布2019-11-01 16:25:11
8690
发布2019-11-01 16:25:11
举报
文章被收录于专栏:办公魔盒办公魔盒
VB.NET LED自定义窗体源码
代码语言:javascript
复制
Imports System.Drawing.Imaging
Public Class LED
   Private TXT_MASK As Bitmap = Nothing
   Private IMG_MASK As Bitmap = Nothing
   Private TF As Boolean = False
   Public LED_UP As Integer = 50
   Public Property INPUT_IMG As Bitmap
       Get
           Return TXT_MASK
       End Get
       Set(value As Bitmap)
           TXT_MASK = value
           MASK()
       End Set
   End Property
   Private Sub MASK()
       If Created = False Then Exit Sub
       If Visible = False Then Exit Sub
       If TXT_MASK Is Nothing Then Exit Sub
       If TF Then Exit Sub
       TF = True
       Using Txbitmap As New Bitmap(TXT_MASK)
           Dim Bpdata As BitmapData = Txbitmap.LockBits(New Rectangle(0, 0, Txbitmap.Width, Txbitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb)
           Dim Bts(Bpdata.Stride * Bpdata.Height) As Byte
           Runtime.InteropServices.Marshal.Copy(Bpdata.Scan0, Bts, 0, Bts.Length)
           Txbitmap.UnlockBits(Bpdata)
           IMG_MASK = Nothing
           IMG_MASK = New Bitmap(Width, Height)
           Using G As Graphics = Graphics.FromImage(IMG_MASK)
               G.Clip = New Region(New Rectangle(0, 0, Width, Height))
               Dim W As Integer = 1
               Dim W_W As Integer = 1
               Using TB As New Bitmap(W + W_W, W + W_W)
                   G.SmoothingMode = Drawing2D.SmoothingMode.HighSpeed
                   Using G2 As Graphics = Graphics.FromImage(TB)
                       G2.Clip = New Region(New Rectangle(0, 0, TB.Width, TB.Height))
                       G2.FillRectangle(New SolidBrush(Color.FromArgb(255, 15, 15, 15)), New Rectangle(0, 0, W, W))
                       Using Txb As New TextureBrush(TB)
                           G.FillRectangle(Txb, New Rectangle(0, 0, Width, Height))
                       End Using
                   End Using
               End Using
               Dim WW As Integer = W + W_W
               For I As Integer = 0 To TXT_MASK.Width - WW
                   For J As Integer = 0 To TXT_MASK.Height - WW
                       Dim Cl As Color = Color.Transparent
                       Dim X, Y As Integer
                       X = I * 4
                       Y = J * (Txbitmap.Width * 4)
                       Dim Bts2(3) As Byte
                       Bts2(0) = Bts(X + Y)
                       Bts2(1) = Bts(X + Y + 1)
                       Bts2(2) = Bts(X + Y + 2)
                       Bts2(3) = Bts(X + Y + 3)
                       If Bts2(3) <> 0 Then
                           G.Clip = New Region(New Rectangle(I * WW, J * WW, W, W))
                           Dim AA As Integer = Bts2(2) + LED_UP
                           Dim AB As Integer = Bts2(1) + LED_UP
                           Dim AC As Integer = Bts2(0) + LED_UP
                           AA = If(AA < 0, 0, AA)
                           AB = If(AB < 0, 0, AB)
                           AC = If(AC < 0, 0, AC)
                           AA = If(AA > 255, 255, AA)
                           AB = If(AB > 255, 255, AB)
                           AC = If(AC > 255, 255, AC)
                           G.FillRectangle(New SolidBrush(Color.FromArgb(Bts2(3), AA, AB, AC)), New Rectangle(I * WW, J * WW, W, W))
                           If I * WW > Width OrElse J * WW > Height Then
                               TF = False
                               Exit Sub
                           End If
                       End If
                       Application.DoEvents()
                   Next
                   Application.DoEvents()
               Next
           End Using
       End Using
       If IMG_MASK IsNot Nothing Then BackgroundImage = IMG_MASK
       TF = False
   End Sub

   Private Sub LED_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       MASK()
   End Sub

End Class

<左右滑动查看完整代码>

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 办公魔盒 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • VB.NET LED自定义窗体源码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档