当前位置: 首页 > news >正文

自己做个国庆75周年头像生成器

 版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的

下载相关代码:【免费】《自己做个国庆75周年头像生成器》代码资源-CSDN文库

又是一年国庆节,今年使用国旗做头像的朋友不少,律师也说了,不违法。


所以,做这个程序也没关系吧。
程序设计界面

准备四张透明png图片到程序目录下的Img目录,分别用1-4.png命名。

主要代码就写在下面了:

Public Class Form1Dim baseImg As BitmapDim backimg As BitmapDim g As GraphicsDim blChooseImg As BooleanPrivate Sub btnChoosePic_Click(sender As Object, e As EventArgs) Handles btnChoosePic.ClickDim picname As StringIf ofdPic.ShowDialog = DialogResult.Cancel ThenExit SubEnd Ifpicname = ofdPic.FileNameTrybackimg = New Bitmap(picname)blChooseImg = TrueCall drawImg(cbMask.SelectedIndex)Catch ex As Exceptionbackimg = NothingEnd TryEnd SubPrivate Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.LoadblChooseImg = FalsebaseImg = New Bitmap(pbCombine.Width, pbCombine.Height)g = Graphics.FromImage(baseImg)cbMask.SelectedIndex = 0AddHandler cbMask.SelectedIndexChanged, AddressOf cbMaskSelectedIndexChangedEnd SubPrivate Sub cbMaskSelectedIndexChanged(sender As Object, e As EventArgs)Call drawImg(cbMask.SelectedIndex)End SubPrivate Sub drawImg(ByVal maskid As Integer)If blChooseImg = False Then Exit Subg.DrawImage(backimg, New Rectangle(0, 0, pbCombine.Width, pbCombine.Height), New Rectangle(0, 0, backimg.Width, backimg.Height), GraphicsUnit.Pixel)Dim maskName As StringmaskName = Application.StartupPath & "\img\" & (maskid + 1).ToString & ".png"Dim maskImg As New Bitmap(maskName)g.DrawImage(maskImg, New Rectangle(0, 0, pbCombine.Width, pbCombine.Height), New Rectangle(0, 0, maskImg.Width, maskImg.Height), GraphicsUnit.Pixel)pbCombine.Image = baseImgEnd SubPrivate Sub pbCombine_MouseDown(sender As Object, e As MouseEventArgs) Handles pbCombine.MouseDownIf e.Button = MouseButtons.Right ThenIf blChooseImg = True ThencmsSave.Show(sender, e.Location)End IfEnd IfEnd SubPrivate Sub tsmSaveImg_Click(sender As Object, e As EventArgs) Handles tsmSaveImg.ClickDim savePath As StringIf sfdPic.ShowDialog = DialogResult.Cancel ThenExit SubEnd IfsavePath = sfdPic.FileNameTrybaseImg.Save(savePath)MessageBox.Show("保存完毕")Catch ex As ExceptionMessageBox.Show(ex.Message)End TryEnd SubPrivate Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosingg.Dispose()baseImg.Dispose()End Sub
End Class

代码太简单,不一一讲解了。
注意一个地方,窗体载入的时候为什么要:
      AddHandler cbMask.SelectedIndexChanged, AddressOf cbMaskSelectedIndexChanged
而不是直接使用 cbMask.SelectedIndexChanged 这个事件呢?

    Private Sub cbMask_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbMask.SelectedIndexChanged

    End Sub

请读者自己想一想。
运行时是这样滴:

简简单单的代码,我们不仅可以给自己做,也可以给朋友做头像了。
 

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

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

相关文章:

  • 基于微信小程序的美食推荐系统
  • 数据结构-栈(理解版)
  • 数据结构之链表(2),双向链表
  • C语言——动态内存分配
  • linux部署redis,整合ansible和redis
  • 前端工程规范-2:JS代码规范(Prettier + ESLint)
  • Python 时间占位符:毫秒的使用
  • VR视频怎样进行加密和一机一码的使用?--加密(一)
  • Zookeeper下载、安装配置
  • 软件设计师——计算机网络
  • 【css】常见布局概述
  • OJ题之单链表排序
  • 14年408-计算机网络
  • 【车联网安全】车端知识调研
  • git commit -am 仅提交已修改文件
  • ES6简单总结(搭配简单的讲解和小案例)
  • gulp 教程
  • javascript 哈希表
  • Javascript弹出层-初探
  • JavaScript的使用你知道几种?(上)
  • Joomla 2.x, 3.x useful code cheatsheet
  • k个最大的数及变种小结
  • Laravel5.4 Queues队列学习
  • Python实现BT种子转化为磁力链接【实战】
  • Redis 懒删除(lazy free)简史
  • Ruby 2.x 源代码分析:扩展 概述
  • SQLServer插入数据
  • 前端技术周刊 2019-02-11 Serverless
  • 设计模式 开闭原则
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • #100天计划# 2013年9月29日
  • #13 yum、编译安装与sed命令的使用
  • #QT(智能家居界面-界面切换)
  • $$$$GB2312-80区位编码表$$$$
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (十六)、把镜像推送到私有化 Docker 仓库
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)Sublime Text3配置Lua运行环境
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .Net CF下精确的计时器
  • .NET COER+CONSUL微服务项目在CENTOS环境下的部署实践
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET Project Open Day(2011.11.13)
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .Net环境下的缓存技术介绍
  • .net中的Queue和Stack
  • /*在DataTable中更新、删除数据*/
  • @Value读取properties中文乱码解决方案
  • @Value获取值和@ConfigurationProperties获取值用法及比较(springboot)