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

news2025/5/22 7:35:18

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

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

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


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

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

主要代码就写在下面了:

Public Class Form1
    Dim baseImg As Bitmap

    Dim backimg As Bitmap
    Dim g As Graphics

    Dim blChooseImg As Boolean

    Private Sub btnChoosePic_Click(sender As Object, e As EventArgs) Handles btnChoosePic.Click
        Dim picname As String
        If ofdPic.ShowDialog = DialogResult.Cancel Then
            Exit Sub
        End If
        picname = ofdPic.FileName
        Try
            backimg = New Bitmap(picname)
            blChooseImg = True
            Call drawImg(cbMask.SelectedIndex)
        Catch ex As Exception
            backimg = Nothing
        End Try
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        blChooseImg = False
        baseImg = New Bitmap(pbCombine.Width, pbCombine.Height)
        g = Graphics.FromImage(baseImg)
        cbMask.SelectedIndex = 0
        AddHandler cbMask.SelectedIndexChanged, AddressOf cbMaskSelectedIndexChanged
    End Sub

    Private Sub cbMaskSelectedIndexChanged(sender As Object, e As EventArgs)
        Call drawImg(cbMask.SelectedIndex)
    End Sub

    Private Sub drawImg(ByVal maskid As Integer)
        If blChooseImg = False Then Exit Sub

        g.DrawImage(backimg, New Rectangle(0, 0, pbCombine.Width, pbCombine.Height), New Rectangle(0, 0, backimg.Width, backimg.Height), GraphicsUnit.Pixel)

        Dim maskName As String
        maskName = 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 = baseImg
    End Sub

    Private Sub pbCombine_MouseDown(sender As Object, e As MouseEventArgs) Handles pbCombine.MouseDown
        If e.Button = MouseButtons.Right Then
            If blChooseImg = True Then
                cmsSave.Show(sender, e.Location)
            End If
        End If
    End Sub

    Private Sub tsmSaveImg_Click(sender As Object, e As EventArgs) Handles tsmSaveImg.Click
        Dim savePath As String
        If sfdPic.ShowDialog = DialogResult.Cancel Then
            Exit Sub
        End If
        savePath = sfdPic.FileName
        Try
            baseImg.Save(savePath)
            MessageBox.Show("保存完毕")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

    End Sub

    Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
        g.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 教程 目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2180946.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MFU简介

1、缩写 MFU - Mask Field Utilization(光刻掩膜版有效利用比例) GDPW - Gross Die Per Wafer,每张wafer上die的数量 2、什么是MASK 在光刻机中,光源(紫外光、极紫外光)透过mask曝光在晶圆上形成图…

华大HC32F448的FreeRTOS移植

为什么要移植FreeRTOS? 目前的程序只是前后台查询方式的架构,有些场合更适用FreeRTOS(免费使用)。 下载地址: 下载 FreeRTOS - FreeRTOS™ 相关知识入门: FreeRTOS™ - FreeRTOS™ (网址) FreeRTOSv9.0.0文件夹…

总结C/C++中内存区域划分

目录 1.C/C程序内存分配主要的几个区域: 2.内存分布图 1.C/C程序内存分配主要的几个区域: 1、栈区 2、堆区 3、数据段(静态区) 4.代码段 2.内存分布图 如图: static修饰静态变量成员——放在静态区 int globalVar 是…

ESXI识别服务器磁盘,虚拟机显示无效

ESXI识别服务器磁盘,虚拟机显示无效 系统意外断电识别不到磁盘的情况下可以管理-》硬件-》搜索磁盘名称,选择切换直通,则虚拟机正常。

COMP 6714-Info Retrieval and Web Search笔记week2

tokenizer:分词器 右半部分:倒排索引 Westlaw AND(&): 要搜索必须同时出现在文档中的两个或多个词语,请使用 AND(&)。例如,输入 narcotics & warrant&#x…

DialMAT:跨模态特征提取与对抗训练的结合

目录 一、背景介绍二、技术路线2.1 DialMAT的总体架构2.2 基于矩的对抗训练(MAT)2.3 跨模态并行特征提取参考文献 一、背景介绍 在智能体研究领域,一个重要的挑战是如何让智能体有效理解人类的语言指令并在实际环境中完成任务。尤其是在复杂环…

光通信——PON技术

PON网络结构 PON(Passive Optical Network,无源光网络)系统的基本组成包括OLT(Optical Line Terminal,光线路终端)、ODN(Optical Distribution Network,光分配单元)和ON…

机器学习基本上就是特征工程——《特征工程训练营》

作为机器学习流程的一部分,特征工程是对数据进行转化以提高机器学习性能的艺术。 当前有关机器学习的讨论主要以模型为中心。更应该关注以数据为中心的机器学习方法。 本书旨在介绍流行的特征工程技术,讨论何时以及如何运用这些技术的框架。我发现&…

Linux C 编程

Linux C 编程 在此推荐一个非常好的学习资料 统计文件单词数量 统计一个文件中的单词数量,可以将文件中的所有字符分为字母和分隔符。分隔符不属于单词内部,故定义一个状态机,来记录当前读取字符的状态。用 OUT 表示此字符不属于一个单词&…

【解决】Mac 上 M系列芯片用 Vmware Fusion安装 win11 遇到的主要的问题汇总

此文很短,没闲话,干活满满 Mac 版本最干净版本的 win11 免费下载链接 :链接:https://pan.quark.cn/s/4e8e8bb93564 本文实验电脑为:Macbook Air M3 第一个问题:如何解决安装Windows11时出现“这台电脑无…

Acwing 扩展欧几里得算法

1.扩展欧几里得算法 回忆:求最大公约数中学过欧几里得算法(辗转相除法):gcd(a,b) gcd(b, a % b); 裴蜀定理:对于任意正整数a,b,那么一定存在非零整数x,y,使得axbygcd(a,b); 扩展欧几里得算法:…

锁相环PLL 学习笔记(一)

锁相环(Phase-Locked Loop, PLL) 一、基本概念及原理 是一个能够比较输出与输入相位差的反馈系统,利用外部输入的参考信号控制环路内部振荡信号的频率和相位,使振荡信号同步至参考信号。 下图为简单锁相环的结构示意图&#xf…

【工欲善其事】巧用 Sublime Text 生成带格式的 HTML 片段

文章目录 【工欲善其事】巧用 Sublime Text 生成带格式的 HTML 片段1 问题由来2 操作流程步骤1:打开代码片段定制页步骤2:在新标签页输入定制 XML步骤3:保存定义内容步骤4:功能测试 3 拓展 【工欲善其事】巧用 Sublime Text 生成带…

什么是前端开发 ?

每当我们访问网页时,为什么会有这么多样的图片、视频、动画、各种各样的元素呢?下面将为你揭晓! 一、 前端世界的基石 一切始于用户在浏览器地址栏输入一串字符,敲下回车。看似简单的动作,却开启了一段奇妙的旅程。 …

实时美颜功能技术揭秘:视频美颜SDK与API的技术剖析

当下,用户希望在视频直播中呈现出最佳状态,这推动了视频美颜SDK和API的迅速发展。本文将深入剖析这项技术的核心原理、应用场景以及未来趋势。 一、实时美颜技术的基本原理 在实现这些效果的过程中,视频美颜SDK通常会使用以下几种技术&…

海信新风空调小氧吧X7:解锁母婴级标准认证的防直吹神器

随着智能科技推进,人们对空调产品的需求,早已超越温度调节范畴,注重追求舒适体验与健康生态。如何让用户拥抱好空气,体验呼吸舒适感?近日,海信空调发布产品预告,10月1日,海信新风空调…

Unity实战案例全解析:RTS游戏的框选和阵型功能(5)阵型功能 优化

前篇:Unity实战案例全解析:RTS游戏的框选和阵型功能(4)阵型功能-CSDN博客 本案例来源于unity唐老狮,有兴趣的小伙伴可以去泰克在线观看该课程 我只是对重要功能进行分析和做出笔记分享,并未无师自通&#x…

产品管理- 互联网产品(6):产品测试

可用性测试 招募有代表性用户作为测试代表参与者,评估某产品符合特定可用性及符合程度。以具有代表性的用户为测试样本。 测试中多关注用户表情与动作。多鼓励与测试的用户更多的操作以用户角度发现问题。同时要做好询问工作,耐心聆听用户的意见&#x…

CSS面试真题 part1

CSS面试真题 part1 1、说说你对盒子模型的理解2、谈谈你对BFC的理解3、什么是响应式设计?响应式设计的基本原理是什么?如何做?4、元素水平垂直居中的方法有哪些?如果元素不定宽高呢?5、如何实现两栏布局,右…

Java数组使用练习(完)

目录 1.数组的使用 1.1数组拷贝native 1.2二分查找 1.3数组元素的平均值 1.4数组元素的排序 1.5其他的常用的方法 1.6冒泡排序实现 1.7数组元素的逆置实现 1.8二维数组 2.关于数组的课后练习 2.1改变数组原有的元素的值 2.2奇数在前,偶数在后 2.3判断目…