2019独角兽企业重金招聘Python工程师标准>>>

今天研究了下.NET窗体应用程序生成透明底色的PNG图像。

我的.NET版本为.NET 4.5,VS版本为VS2012,操作系统版本为Win7旗舰版ServicePack1。

例程1:生成100%纯透明的PNG图片,这个例程生成的是一张没有任何杂质的透明PNG图片。

''' <summary>
''' 生成100%透明的PNG图片
''' </summary>
''' <param name="Width">横向长度</param>
''' <param name="Height">纵向长度</param>
''' <param name="OutputPath">图片输出地址</param>
''' <remarks></remarks>
Public Sub GenTransparentPNG(ByVal width As Integer,ByVal height As Integer,ByVal outputPath As String)Dim image As Bitmap = New Bitmap(width, height)Dim g As Graphics = Graphics.FromImage(image)g.Clear(Color.Transparent)image.Save(outputPath, System.Drawing.Imaging.ImageFormat.Png)
End Sub

例程2:生成100%透明的PNG图片+一个矩形。

''' <summary>
''' 生成100%透明的PNG图片+一个矩形
''' </summary>
''' <param name="Width">横向长度</param>
''' <param name="Height">纵向长度</param>
''' <param name="OutputPath">图片输出地址</param>
''' <remarks></remarks>
Public Sub GenTransparentPNGAndRect(ByVal width As Integer,ByVal height As Integer,ByVal outputPath As String)Dim image As Bitmap = New Bitmap(width, height)Dim g As Graphics = Graphics.FromImage(image)g.Clear(Color.Transparent)If width > 20 And height > 20 Theng.DrawRectangle(Pens.Black, New Rectangle(10, 10, width - 20, height - 20))End Ifimage.Save(outputPath, System.Drawing.Imaging.ImageFormat.Png)
End Sub

例程3:生成白色底色的PNG图片+一个矩形。

''' <summary>
''' 生成白色底色的PNG图片+一个矩形
''' </summary>
''' <param name="Width">横向长度</param>
''' <param name="Height">纵向长度</param>
''' <param name="OutputPath">图片输出地址</param>
''' <remarks></remarks>
Public Sub GenWhitePNGAndRect(ByVal width As Integer,ByVal height As Integer,ByVal outputPath As String)Dim image As Bitmap = New Bitmap(width, height)Dim g As Graphics = Graphics.FromImage(image)g.Clear(Color.White)If width > 20 And height > 20 Theng.DrawRectangle(Pens.Black, New Rectangle(10, 10, width - 20, height - 20))End Ifimage.Save(outputPath, System.Drawing.Imaging.ImageFormat.Png)
End Sub

例程4:将指定颜色替换为透明,如果有需要还可以将此例程进行改造,使得在一定范围内的颜色都被替换为透明。

''' <summary>
''' 将指定颜色替换为透明
''' </summary>
''' <param name="bitmapPath">被替换图像地址</param>
''' <param name="outputPath">新图像输出地址</param>
''' <param name="color">被替换颜色</param>
''' <remarks></remarks>
Public Sub ChangeBackgroundToTransparent(ByVal bitmapPath As String,ByVal outputPath As String,ByVal color As Color)Dim image As Bitmap = New Bitmap(bitmapPath)For i As Integer = 0 To image.Width - 1For j As Integer = 0 To image.Height - 1Dim colorTmp = image.GetPixel(i, j)If colorTmp.R = color.R And colorTmp.G = color.G And colorTmp.B = color.B Thenimage.SetPixel(i, j, Drawing.Color.Transparent)End IfNextNextimage.Save(outputPath, System.Drawing.Imaging.ImageFormat.Png)
End Sub

Main函数调用

Sub Main()'生成200*200的纯透明PNG图片GenTransparentPNG(200, 200, "C:\Users\Tsybius\Desktop\transparent.png")'生成200*200的透明PNG图片外加一个矩形GenTransparentPNGAndRect(200, 200, "C:\Users\Tsybius\Desktop\transparentRect.png")'生成200*200的白色背景PNG图像外加一个矩形GenWhitePNGAndRect(200, 200, "C:\Users\Tsybius\Desktop\whiteRect.png")'将200*200的白色背景PNG图像中白色抠去替换为透明GenWhitePNGAndRect(200, 200, "C:\Users\Tsybius\Desktop\whiteRect2.png")ChangeBackgroundToTransparent("C:\Users\Tsybius\Desktop\whiteRect2.png", "C:\Users\Tsybius\Desktop\transparentRect2.png", Color.White)'生成完毕Console.WriteLine("生成完毕")Console.ReadLine()
End Sub

运行结果如下:

附上另外两个实用的小技巧:

1、获取图像指定点的RGB值,用QQ截图工具,按下Ctrl+Alt+A进入截图模式后,鼠标右下角会自动显示出当前鼠标指针指向位置的颜色信息。

在截图模式下,按下Ctrl键,可以看到十六进制显示的RGB信息

2、判断图像的背景色是否为透明的,可以打开一个PowerPoint演示文稿,设置一个背景,然后将要判断的图像放入即可。

我使用的Office版本为:Microsoft Office Professional Plus 2010,PPT版本为:14.0.4760.1000(32位)。

END

转载于:https://my.oschina.net/Tsybius2014/blog/690199

VB.NET:生成底色透明的PNG图片相关推荐

  1. 【转】关于Java生成背景透明的png图片

    http://www.cnblogs.com/dotjava/archive/2008/09/04/1283963.html 关于Java生成背景透明的png图片 最近用到Java动态生成背景透明的图 ...

  2. Java自动生成背景透明的印章或签名

    工具类 import com.Jake_955.common.business.BusinessException; import lombok.Builder; import lombok.Gett ...

  3. java 显示透明背景png图片

    首先理由ps生成一个背景透明的png图片,然后设置JPanel面板的透明属性,也就是panel.setOpaque(false);设置为透明 class MyPanel extends JLayere ...

  4. android动态生成背景透明带文字的图片

    生成的图片背景一直是黑色,几经查找资料发现,若要使背景为透明,必须设置为Config.ARGB_4444,或者Config.ARGB_8888,    而不是Bitmap.Config.RGB_565 ...

  5. matlab出图底色透明

    matlab出图底色透明 使用图片导出功能,保存为png格式,底色即为透明

  6. 如何生成背景透明的微信小程序二维码

    如何生成背景透明的微信小程序二维码 透明背景参数 透明背景参数 is_hyaline 是否需要透明底色, is_hyaline 为true时,生成透明底色的小程序码 public function g ...

  7. 用Python生成随机的中文验证码图片

    大家都在 Python论坛里讨论.交流,你还在等什么!赶快加入! 在登录很多网站的时候,他们已经不在使用简单的英文和数字的验证码,为了防止恶心注册和群发软件的侵袭,现在都开始使用中文的验证码了. 今天 ...

  8. IE6下PNG图片透明效果(PNG图片做背景也可以)

    懒人萱在这里保证发的文章都是高质量的经过测试的JS代码,而且IE6.IE7和火狐都兼容的,希望大家多多关注我的帖子,我会把我的经验都共享出来哦! 懒人萱在寻找PNG图片透明效果的JS特效代码的时候,发 ...

  9. 为什么存png还有白色底_用photoshop保存透明背景的图片为png格式,为什么打开后是白色背景了?...

    Photoshop想要保存透2113明背景的图片要保存PNG格式,保存JPG格式就5261会变成图片.41021.电脑打开Photoshop.2.打1653开Photoshop后,打开一张图片.3.打 ...

最新文章

  1. jQuery Masonry 一个 jQuery动态网格布局的插件
  2. 区块链技术应用的关键问题和挑战
  3. 今天刚刚开通了写播客的功能,以后记录工作学习的点点滴滴
  4. iOS开发UI篇—CAlayer(创建图层)
  5. html5 sse java_html5----sse实现服务端推送数据给前端
  6. Java面向对象编程篇1——类与对象
  7. 学生管理系统c语言代码实验报告,C语言学生信息管理系统实验报告(含源代码).doc...
  8. 解决Vscode编辑器不能打开多标签页问题
  9. android 自定义锁屏api,Android锁屏小部件
  10. 数据结构课程设计——逆波兰表达式的计算
  11. 台式机通过笔记本的WIFI连接上网,并实现笔记本对台式机的远程连接
  12. 调查计算机对运算能力的影响,计算器对运算能力的影响的报告.docx
  13. PostgreSQL对汉字按拼音排序
  14. c++ private、protect、public、virtual详细说明***
  15. 简单平台用户信息管理系统
  16. 解决xampp安装后遇到的常见问题
  17. 分布式进阶(十九) 基于集群的动态反馈负载均衡策略
  18. win7系统安装sql server 2000 图解全过程
  19. 新研究挑战DNA随机突变进化理论
  20. 新能源汽车充电硬件接口标准

热门文章

  1. Robot Techology
  2. python 怎么输入字符上的横线_python中下划线怎么打
  3. 烟来风吹火来水灭,智慧隧道的安全措施提升了200%
  4. html frame滚动条,如何修改 iframe 滚动条样式
  5. C#编程基础——综合项目实践:KTV点歌系统项目第三课:辅助类开发及登录窗体制作
  6. Ubuntu18.04+Win10双系统下ubuntu关机时电源和风扇无法关闭解决方案
  7. Win10 操作系统,开机硬盘占用了过高,导致电脑卡断
  8. HttpStatusEnum - Http状态码枚举
  9. JSON, JSONObject, JsonObject
  10. 流媒体播放-在线音乐(1)