您的位置:首页 > 编程语言 > VB

vb.net 实现图片圆形渐变模糊

2013-12-23 16:56 806 查看


实现代码:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Paint ' 创造容器的paint事件

Dim btp As New Bitmap(300, 300) ' 定义位图变量1

Dim btp2 As New Bitmap(300, 300) ' 定义位图变量2

Dim a As Graphics = Graphics.FromImage(btp) '创建绘图对象

a.DrawImage(PictureBox1.Image, 0, 0, 300, 300) '将图片框1的图像以300x300象素写入位图变量1中,这样做是将背景图片缩放以300x300

Dim b As Graphics = Graphics.FromImage(btp2) ' 创建绘图对象2

Dim r, x, y, alph1 As Integer

Dim xtoy As Rectangle '定义矩形

Dim c2, c3 As Color '定义颜色

Dim br1 As SolidBrush ' 定义填充颜色

While y < 300 'y是位图中象素点y坐标

x = 0

While x < 300 'x是位图中象素点的x坐标

xtoy = New Rectangle(x, y, 1, 1) ' 定义位置x,y尺寸为宽度1x1象素的矩形用来代替点(vb.net没找到画点函数:)

r = Math.Sqrt((x - 150) ^ 2 + (y - 150) ^ 2) '计算坐标x,y坐标处相对图片中点的距离

alph1 = 255 - (r - 80) * 255 / 70 ' 以到中心点的距离计算出透明度(0为最透明,255不透明)

If alph1 <= 0 Then alph1 = 0

If alph1 >= 255 Then alph1 = 255

If r <= 50 Then alph1 = 255 '图片中心半径50象素内不透明

c2 = btp.GetPixel(x, y) '获取位图指定点的颜色值(RGB)

c3 = System.Drawing.Color.FromArgb(alph1, c2) ‘生成(ARGB)色

br1 = New SolidBrush(c3)‘生成画笔色

b.FillRectangle(br1, xtoy) '写入新颜色点

x = x + 1 .'x坐标加1

End While

y = y + 1 'y坐标加1

End While

PictureBox2.Image = btp2 '将重新生成后的图片写入图片框中

a.Dispose()

b.Dispose()

End Sub

应用实例图:




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: