加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

vb.net 教程 5-16 图像处理例子 2 半透明的图片水印

发布时间:2020-12-16 23:53:30 所属栏目:大数据 来源:网络整理
导读:图片水印有两种方法,一是读取水印的所有像素颜色,颜色上加上设置的alpha值,然后将每个像素绘制到指定的位置;二是使用颜色矩阵( 如果忘记了如何使用颜色矩阵的朋友,可以参看《 vb.net 教程 5-16 图像处理之ImageAttributes 类1 颜色矩阵1 》开始的内容
图片水印有两种方法,一是读取水印的所有像素颜色,颜色上加上设置的alpha值,然后将每个像素绘制到指定的位置;二是使用颜色矩阵( 如果忘记了如何使用颜色矩阵的朋友,可以参看《 vb.net 教程 5-16 图像处理之ImageAttributes 类1 颜色矩阵1 》开始的内容),这也是本节所采用的方法。
设计界面,这里测试使用了一个ie的图标作为图片水印:
绘制图片使用的方法Graphics.DrawImage。
具体代码:
Private Sub Button2_Click(sender As Object,e As EventArgs) Handles Button2.Click
        Dim logoOpacity As Single = HScrollBar1.Value / 255
        Dim logoImg As Bitmap = PictureBox2.Image
        Dim logoLeft As Integer = 10
        Dim logoTop As Integer = 10

        Dim imgDest As Bitmap = PictureBox1.Image.Clone
        Dim g As Graphics = Graphics.FromImage(imgDest)

        Dim matrixArray()() As Single = {
              New Single() {1,0},New Single() {0,1,logoOpacity,1}}
        Dim cMatrix As New Imaging.ColorMatrix(matrixArray)
        Dim imgAttr As New Imaging.ImageAttributes()
        imgAttr.SetColorMatrix(cMatrix,Imaging.ColorMatrixFlag.Default,Imaging.ColorAdjustType.Bitmap)

        Dim recDest As New Rectangle(logoLeft,logoTop,logoImg.Width,logoImg.Height)
        g.DrawImage(logoImg,recDest,logoImg.Height,GraphicsUnit.Pixel,imgAttr)

        g.Dispose()
        PictureBox3.Image = imgDest
    End Sub
这种方法比第一种绘制像素的方法要更加简便。
下面解释一下代码:
运行结果:

由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。

学习更多vb.net知识,请参看vb.net 教程 目录

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读