C# Bitmap类学习1

Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace bmpdemo
{
    
    public partial class Form1 : Form
    {
        Bitmap bmp1;
        Rectangle rect1;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            bmp1 = new Bitmap(100, 100);
            Graphics g = Graphics.FromImage(bmp1);
            g.DrawString("bmp测试,", this.Font, Brushes.Black, 20, 20);
            rect1 = new Rectangle(30, 40, 40, 40);
            g.FillRectangle(Brushes.Green, rect1);
            g.Dispose();

            for(int i=60; i<90;i++)
            {
                bmp1.SetPixel(i, 70, Color.Red);
            }            

            pictureBox1.Image = bmp1;

            textBox1.Text = Image.GetPixelFormatSize(bmp1.PixelFormat).ToString();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            bmp1.Save("E:\\bmpdemo.jpg");
        }
    }
}

先生成一个100*100大小的位图bmp1;

然后从bmp1获取Graphics对象g,然后用g进行绘制,这样绘制的东西是绘制在bmp1上;绘制字符串,绘制矩形;

然后调用bmp1对象的SetPixel方法,设置一些像素点的颜色;

然后把bmp1赋值给pictureBox的Image属性,这会在pictureBox中显示bmp1;

然后返回一下bmp1对象的颜色深度;

位图的颜色深度的含义是,

    若色彩深度是n位,即有2^n种颜色选择,而储存每像素所用的位数就是n;

bmp1的颜色深度是32;如果颜色深度是8,可以表示2^8=256种颜色;

保存图片,可以调用bmp1的Save方法,或者

    pictureBox1.Image.Save("E:\\bmpdemo222.jpg");

调用pictureBox控件的Image属性的Save方法;

运行和打开保存的图片如下,

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

程序媛的mac修炼手册-- 如何用Python节省WPS会员费

上篇分享了如何用微博爬虫&#xff0c;咱举例爬了女明星江疏影的微博数据。今天就用这些数据&#xff0c;给大家安利一下怎么用Python实现WPS中部分Excel付费功能。 MacOS系统自带的工具&#xff0c;绝大多数都非常顶&#xff0c;除Numbers外。当然&#xff0c;page比起word来&…

图像分类】【深度学习】【轻量级网络】【Pytorch版本】EfficientNet_V2模型算法详解

【图像分类】【深度学习】【轻量级网络】【Pytorch版本】EfficientNet_V2模型算法详解 文章目录 【图像分类】【深度学习】【轻量级网络】【Pytorch版本】EfficientNet_V2模型算法详解前言EfficientNet_V2讲解自适应正则化的渐进学习(Progressive Learning with adaptive Regul…

魔众题库系统v9.3.0版本:升级与新功能亮点,让学习更高效!

大家好&#xff01;今天我们激动地向大家宣布&#xff0c;魔众题库系统已经升级到了v9.3.0版本&#xff01;这个版本带来了许多令人兴奋的改进和新功能&#xff0c;让用户的使用体验更上一层楼。 首先&#xff0c;让我们来看看这个版本的VIP界面升级。无论是PC端还是移动端&am…

C/C++ - 编程语法特性

目录 标准控制台框架 输入输出对象 命名空间 标准控制台框架 头文件 ​#include <iostream>​​ 告诉编译器我们要使用iostream库尖括号中的名字指定了某个头文件(header) 入口函数 ​int main(void)​​ 返回 ​return 0;​​ 输出语句 ​std::cout << "H…

python基础——锁

进程锁 (互斥锁) 进程锁的引入&#xff1a; 模拟抢票程序&#xff1a; from multiprocessing import Process import json import time def show_ticket(i):with open("./tickets.txt",mode"r",encoding"utf-8") as file:ticket json.load(f…

k8s图形化管理工具之rancher

前言 在前面的k8s基础学习中,我们学习了各种资源的搭配运用,以及命令行,声明式文件创建。这些都是为了k8s管理员体会k8s的框架,内容基础。在真正的生产环境中,大部分的公司还是会选用图形化管理工具来管理k8s集群,大大提高工作效率。 在二进制搭建k8集群时,我们就知道了…

Spring依赖注入之setter注入与构造器注入以及applicationContext.xml配置文件特殊值处理

依赖注入之setter注入 在管理bean对象的组件的时候同时给他赋值&#xff0c;就是setter注入&#xff0c;通过setter注入&#xff0c;可以将某些依赖项标记为可选的&#xff0c;因为它们不是在构造对象时立即需要的。这种方式可以减少构造函数的参数数量&#xff0c;使得类的构…

程序员的自我修养:链接、装载与库 6 可执行文件的装载与进程

1 进程虚拟地址空间 PAE 2 装载的方式 2.1 覆盖装入 省略 178 2.2 页映射 3 从操作系统角度看可执行文件的装载 3.1 进程的建立 182

【必剪】鬼畜rap和鬼畜剧场的区别?

在【选择素材】中&#xff0c;每个素材下会有一个标签显示支持哪种的鬼畜形式&#xff0c;在点击一个两种格式的有【鬼畜剧场】和【鬼畜rap】这两中的主要区别在于 【鬼畜剧场】&#xff1a;对素材进行人工编排&#xff0c;创作自己原创的剧情作 【鬼畜rap】&#xff1a;对于素…

IO多路复用-poll(附通信代码)

IO多路复用-poll 1. poll函数 和select函数的比较 内核对应文件描述符的检测也是以线性的方式进行轮询&#xff0c;根据描述符的状态进行处理poll和select检测的文件描述符集合会在检测过程中频繁的进行用户区和内核区的拷贝&#xff0c;它的开销随着文件描述符数量的增加而…

恒峰配网行波型故障预警定位装置特点及优势

随着电力系统的不断发展&#xff0c;电网运行的安全性和稳定性对于国家经济和人民生活至关重要。为了提高电网运行的可靠性&#xff0c;减少故障发生的可能性&#xff0c;我国电力行业不断引进新技术、新设备&#xff0c;其中配网行波型故障预警定位装置在电网安全领域发挥着越…

CentOS安装Redis教程-shell脚本一键安装配置

文章目录 前言一、Redis单机版安装教程1. 复制脚本2. 增加执行权限3. 执行脚本 二、Redis扩展集群版安装教程1. 安装Redis单机版2. 复制脚本3. 增加执行权限4. 执行脚本5. 测试6. redis_cluster.sh 命令6.1 启动Redis扩展集群6.2 停止Redis扩展集群6.3 查看Redis扩展集群节点信…

mysql 基础(三)

一、多表设计 数据库设计范式 第一范式(确保每列保持原子性) 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值&#xff0c;就说明该数据库表满足了第一范式。第二范式就是要有主键&#xff0c;要求其他字段都依赖于主键。 没有主键就没有唯一性&…

知识产权实缴注册资金的流程

随着新《公司法》的出台&#xff0c;很多企业老板几乎睡不着&#xff0c;都在为实缴注册资本苦恼。前文有谈到目前比较靠谱的实缴方式是知识产权实缴。那么知识产权实缴的流程是怎么样的&#xff1f;需要准备哪些资料&#xff1f; 下面用一张图为各位企业老板们解读知识产权实…

ios上架缺少info.plist文件

app打包ios提示修改info.plist文件&#xff0c;在iOS原生开发中提供了配置 Info.plist 和 资源文件&#xff08;Bundle Resources&#xff09;。uni-app中对常用项进行了封装&#xff0c;提供了manifest.json。 但manifest.json不能包含所有iOS的配置。需要自定义一个Info.plis…

掌握大语言模型技术: 推理优化

掌握大语言模型技术_推理优化 堆叠 Transformer 层来创建大型模型可以带来更好的准确性、少样本学习能力&#xff0c;甚至在各种语言任务上具有接近人类的涌现能力。 这些基础模型的训练成本很高&#xff0c;并且在推理过程中可能会占用大量内存和计算资源&#xff08;经常性成…

【本科生机器学习】【北京航空航天大学】课题报告:支持向量机(Support Vector Machine, SVM)初步研究【上、原理部分】

说明&#xff1a; &#xff08;1&#xff09;、仅供个人学习使用&#xff1b; &#xff08;2&#xff09;、本科生学术水平有限&#xff0c;故不能保证全无科学性错误&#xff0c;本文仅作为该领域的学习参考。 一、课程总结 1、机器学习&#xff08;Machine Learning, ML&am…

【9.DAC数模转换器】蓝桥杯嵌入式一周拿奖速成系列

系列文章目录 蓝桥杯嵌入式系列文章目录(更多此系列文章可见) DAC数模转换器 系列文章目录一、STM32CUBEMX配置二、项目代码1.main.c --> DACProcess 总结 一、STM32CUBEMX配置 STM32CUBEMX PA4 -> DAC1_OUT1 ; PA5 -> DAC1_OUT2DACProcess 二、项目代码 1.main.c -…

司铭宇老师:销售人员心态激励培训:销售心态调整与情绪压力管理

销售人员心态激励培训&#xff1a;销售心态调整与情绪压力管理&#xff1a;迈向成功的关键要素 导语&#xff1a;在竞争激烈的销售行业中&#xff0c;心态调整与情绪压力管理成为销售人员至关重要的能力。如何在这场博弈中保持良好的心态&#xff0c;有效应对压力&#xff0c;…

C++的关键字,命名空间,缺省参数,函数重载以及原理

文章目录 前言一、C关键字(C98)二、命名空间命名空间介绍命名空间的使用 三、C输入【cin】& 输出【cout】四、缺省参数缺省参数概念缺省参数分类缺省参数的使用小结一下 五、函数重载函数重载介绍函数重载类型 六、C支持函数重载的原理--名字修饰(name Mangling)【重点】 前…