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

C#:Bitmap类使用方法—第1讲

首先看一下Bitmap定义:封装 GDI+ 位图,此位图由图形图像及其属性的像素数据组成。 Bitmap 是用于处理由像素数据定义的图像的对象。

下面介绍一下使用的例子:

Bitmap image1;

private void Button1_Click(System.Object sender, System.EventArgs e)
{

    try
    {
        // Retrieve the image.
        image1 = new Bitmap(@"C:\Documents and Settings\All Users\" 
            + @"Documents\My Music\music.bmp", true);

        int x, y;

        // Loop through the images pixels to reset color.
        for(x=0; x<image1.Width; x++)
        {
            for(y=0; y<image1.Height; y++)
            {
                Color pixelColor = image1.GetPixel(x, y);
                Color newColor = Color.FromArgb(pixelColor.R, 0, 0);
                image1.SetPixel(x, y, newColor);
            }
        }

        // Set the PictureBox to display the image.
        PictureBox1.Image = image1;

        // Display the pixel format in Label1.
        Label1.Text = "Pixel format: "+image1.PixelFormat.ToString();
    }
    catch(ArgumentException)
    {
        MessageBox.Show("There was an error." +
            "Check the path to the image file.");
    }
}

注释:

位图由图形图像的像素数据及其属性组成。 有许多标准格式可用于将位图保存到文件中。 GDI+ 支持以下文件格式:BMP、GIF、EXIF、JPG、PNG 和 TIFF。 有关支持的格式的详细信息,请参阅 位图的类型。

可以使用其中一个 Bitmap 构造函数从文件、流和其他源创建图像,并使用 方法将它们保存到流或文件系统 Save 。 使用 DrawImage 对象的 方法 Graphics 将图像绘制到屏幕或内存中。 有关使用图像文件的主题列表,请参阅 使用图像、位图、图标和图元文件。

构造函数:

Bitmap(Image)

从指定的现有图像初始化 Bitmap 类的新实例。

Bitmap(Image, Int32, Int32)

从指定的现有图像(缩放到指定大小)初始化 Bitmap 类的新实例。

Bitmap(Image, Size)

从指定的现有图像(缩放到指定大小)初始化 Bitmap 类的新实例。

Bitmap(Int32, Int32)

用指定的大小初始化 Bitmap 类的新实例。

Bitmap(Int32, Int32, Graphics)

用指定的大小和指定的 Graphics 对象的分辨率初始化 Bitmap 类的新实例。

Bitmap(Int32, Int32, Int32, PixelFormat, IntPtr)

用指定的大小、像素格式和像素数据初始化 Bitmap 类的新实例。

Bitmap(Int32, Int32, PixelFormat)

用指定的大小和格式初始化 Bitmap 类的新实例。

Bitmap(Stream)

从指定的数据流初始化 Bitmap 类的新实例。

Bitmap(Stream, Boolean)

从指定的数据流初始化 Bitmap 类的新实例。

Bitmap(String)

从指定的文件初始化 Bitmap 类的新实例。

Bitmap(String, Boolean)

从指定的文件初始化 Bitmap 类的新实例。

Bitmap(Type, String)

从指定的资源初始化 Bitmap 类的新实例。

属性:

Flags

获取该 Image 的像素数据的特性标志。

(继承自 Image)
FrameDimensionsList

获取 GUID 的数组,这些 GUID 表示此 Image 中帧的维数。

(继承自 Image)
Height

获取此 Image 的高度(以像素为单位)。

(继承自 Image)
HorizontalResolution

获取此 Image 的水平分辨率(以“像素/英寸”为单位)。

(继承自 Image)
Palette

获取或设置用于此 Image 的调色板。

(继承自 Image)
PhysicalDimension

获取此图像的宽度和高度。

(继承自 Image)
PixelFormat

获取此 Image 的像素格式。

(继承自 Image)
PropertyIdList

获取存储于该 Image 中的属性项的 ID。

(继承自 Image)
PropertyItems

获取存储于该 Image 中的所有属性项(元数据片)。

(继承自 Image)
RawFormat

获取此 Image 的文件格式。

(继承自 Image)
Size

获取此图像的宽度和高度(以像素为单位)。

(继承自 Image)
Tag

获取或设置提供有关图像的附加数据的对象。

(继承自 Image)
VerticalResolution

获取此 Image 的垂直分辨率(以“像素/英寸”为单位)。

(继承自 Image)
Width

获取此 Image 的宽度(以像素为单位)。

(继承自 Image)

方法:

Clone()

创建此 Image 的一个精确副本。

(继承自 Image)
Clone(Rectangle, PixelFormat)

创建此 Bitmap(它由 Rectangle 结构并使用指定的 PixelFormat 枚举定义)部分的副本。

Clone(RectangleF, PixelFormat)

创建此 Bitmap(用指定的 PixelFormat 枚举定义)部分的副本。

CreateObjRef(Type)

创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。

(继承自 MarshalByRefObject)
Dispose()

释放此 Image 使用的所有资源。

(继承自 Image)
Dispose(Boolean)

释放由 Image 占用的非托管资源,还可以另外再释放托管资源。

(继承自 Image)
Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
FromHicon(IntPtr)

从图标的 Windows 图柄创建 Bitmap。

FromResource(IntPtr, String)

从指定的 Windows 资源创建 Bitmap。

GetBounds(GraphicsUnit)

以指定的单位获取图像的界限。

(继承自 Image)
GetEncoderParameterList(Guid)

返回有关指定的图像编码器所支持的参数的信息。

(继承自 Image)
GetFrameCount(FrameDimension)

返回指定维度的帧数。

(继承自 Image)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetHbitmap()

从此 Bitmap创建 GDI 位图对象。

GetHbitmap(Color)

从此 Bitmap创建 GDI 位图对象。

GetHicon()

返回图标的图柄。

GetLifetimeService()

检索控制此实例的生存期策略的当前生存期服务对象。

(继承自 MarshalByRefObject)
GetPixel(Int32, Int32)

获取此 Bitmap 中指定像素的颜色。

GetPropertyItem(Int32)

从该 Image 获取指定的属性项。

(继承自 Image)
GetThumbnailImage(Int32, Int32, Image+GetThumbnailImageAbort, IntPtr)

返回此 Image 的缩略图。

(继承自 Image)
GetType()

获取当前实例的 Type。

(继承自 Object)
InitializeLifetimeService()

获取生存期服务对象来控制此实例的生存期策略。

(继承自 MarshalByRefObject)
LockBits(Rectangle, ImageLockMode, PixelFormat)

将 Bitmap 锁定到系统内存中。

LockBits(Rectangle, ImageLockMode, PixelFormat, BitmapData)

将 Bitmap 锁定到系统内存中。

MakeTransparent()

让 Bitmap 的默认透明颜色为透明。

MakeTransparent(Color)

使指定的颜色对此 Bitmap 透明。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
MemberwiseClone(Boolean)

创建当前 MarshalByRefObject 对象的浅表副本。

(继承自 MarshalByRefObject)
RemovePropertyItem(Int32)

从该 Image 移除指定的属性项。

(继承自 Image)
RotateFlip(RotateFlipType)

旋转、翻转或者同时旋转和翻转 Image。

(继承自 Image)
Save(Stream, ImageCodecInfo, EncoderParameters)

使用指定的编码器和图像编码器参数,将该图像保存到指定的流。

(继承自 Image)
Save(Stream, ImageFormat)

将此图像以指定的格式保存到指定的流中。

(继承自 Image)
Save(String)

将该 Image 保存到指定的文件或流。

(继承自 Image)
Save(String, ImageCodecInfo, EncoderParameters)

使用指定的编码器和图像编码器参数,将该 Image 保存到指定的文件。

(继承自 Image)
Save(String, ImageFormat)

将此 Image 以指定格式保存到指定文件。

(继承自 Image)
SaveAdd(EncoderParameters)

将帧添加到上次对 Save 方法调用时所指定的文件或流中。 使用此方法将多帧图像中的选定帧保存到另一个多帧图像。

(继承自 Image)
SaveAdd(Image, EncoderParameters)

将帧添加到上次对 Save 方法调用时所指定的文件或流中。

(继承自 Image)
SelectActiveFrame(FrameDimension, Int32)

选择由维度和索引指定的帧。

(继承自 Image)
SetPixel(Int32, Int32, Color)

在此 Bitmap 中设置指定像素的颜色。

SetPropertyItem(PropertyItem)

在此 Image 中存储一个属性项(元数据片)。

(继承自 Image)
SetResolution(Single, Single)

设置此 Bitmap 的分辨率。

ToString()

返回表示当前对象的字符串。

(继承自 Object)
UnlockBits(BitmapData)

从系统内存解锁此 Bitmap。

上面就是BItmap的基础知识,下面会按照每个方法的如何使用,进行细致讲解。

相关文章:

C#:Bitmap类使用方法—第1讲

首先看一下Bitmap定义&#xff1a;封装 GDI 位图&#xff0c;此位图由图形图像及其属性的像素数据组成。 Bitmap 是用于处理由像素数据定义的图像的对象。 下面介绍一下使用的例子&#xff1a; Bitmap image1; private void Button1_Click(System.Object sender, System.Eve…...

PaddleNLP 3.0 支持大语言模型开发

huggingface不支持模型并行。张量并行&#xff0c;不满足大规模预训练的需求。 1、组网部分 2、数据流 3、训练器 4、异步高效的模型存储...

32次8.21(学习playbook-roles,脚本创建数据库和表,mycat读写分离)

1.roles目录介绍 files&#xff1a;⽤来存放由copy模块或script模块调⽤的⽂件。 tasks&#xff1a;⾄少有⼀个main.yml⽂件&#xff0c;定义各tasks。 handlers:有⼀个main.yml⽂件&#xff0c;定义各handlers。 templates&#xff1a;⽤来存放jinjia2模板。 vars&#xff1a…...

I2C通信协议(软件I2C和硬件I2C)

相比于之前学的异步全双工且需要两条通信线的串口通信&#xff0c;I2C则为同步半双工&#xff0c;仅需要一条通信线&#xff0c;全双工与半双工区别如下&#xff1a; 全双工&#xff08;Full Duplex&#xff09;半双工&#xff08;Half Duplex&#xff09;数据传输方式同时双向…...

Linux入门——08 进程间通讯——管道

1.进程间通讯 1.1什么是通讯 进程具有独立性&#xff08;每个进程都有自己的PCB,独立地址空间&#xff0c;页表&#xff09;但是要进行进程的通信&#xff0c;通信的成本一定不低&#xff0c;打破了独立性 进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给…...

深入探讨SD NAND的SD模式与SPI模式初始化

在嵌入式系统和存储解决方案中&#xff0c;SD NAND的广泛应用是显而易见的。CS创世推出的SD NAND支持SD模式和SPI模式&#xff0c;这两种模式在功能和实现上各有优劣。在本文中&#xff0c;我们将深入探讨这两种模式的初始化过程&#xff0c;并比较它们在不同应用场景下的优劣&…...

【jvm】栈和堆的区别

目录 1. 用途2. 线程共享性3. 内存分配和回收4. 生命周期5. 性能特点 1. 用途 1.堆&#xff1a;主要用于存储对象实例和数组。在Java中&#xff0c;所有通过new关键字创建的对象都会被分配到堆上。堆是一个大的内存池&#xff0c;用于存储所有的Java对象&#xff0c;包括实例变…...

智能的意义是降低世界的不确定性

世界充满着不确定性&#xff0c;而智能天生就追求一定的确定性&#xff0c;因为不确定性会危及智能的生存。智能本身是一种有序、相对确定的结构产生的&#xff0c;虽然也有一定的不确定性&#xff0c;而且这些不确定性有利于智能的进化&#xff0c;但是&#xff0c;相对而言&a…...

python实现指数平滑法进行时间序列预测

python实现指数平滑法进行时间序列预测 一、指数平滑法定义 1、指数平滑法是一种常用的时间序列预测算法,有一次、二次和三次平滑,通过加权系数来调整历史数据权重; 2、主要思想是:预测值是以前观测值的加权和,且对不同的数据给予不同的权数,新数据给予较大的权数,旧数…...

linux文件——用户缓冲区——概念深度探索、IO模拟实现

前言&#xff1a;本篇文章主要讲解文件缓冲区。 讲解的方式是通过抛出问题&#xff0c; 然后通过分析问题&#xff0c; 将缓冲区的概念与原理一步一步地讲解。同时&#xff0c; 本节内容在最后一部分还会带友友们模拟实现一下c语言的printf&#xff0c; fprintf接口&#xff0c…...

Hive3:常用查询语句整理

一、数据准备 建库 CREATE DATABASE itheima; USE itheima;订单表元数据 1 1000000 100058 6 -1 509.52 0.00 28155.40 499.33 0 0 lisi shanghai 157 2019-06-22 17:28:15 2019-06-22 17:28:15 1 2 5000000 100061 72 -1 503.86 0.00 38548.00 503.86 1 0 zhangsan shangha…...

Ubuntu下载安装教程|Ubuntu最新长期支持(LTS)版本24.04 LTS下载安装

安装Ubuntu Ubuntu最新长期支持(LTS)版本24.04 LTS Ubuntu 24.04 LTS | 概览 Ubuntu长期支持(LTS)版本&#xff0c;LTS意为“长期支持”&#xff0c;一般为5年。LTS版本将提供免费安全和维护更新至 2029年4月。 Ubuntu 24.04 LTS&#xff08;代号“Noble Numbat”&#xff0c;…...

通知:《自然语言及语音处理设计开发工程师》即将开课!

自然语言及语音处理设计开发工程师&#xff1a;未来职业的黄金选择 下面我们来看看证书颁发的背景&#xff1a;​ 为进一步贯彻落实中共中央印发《关于深化人才发展体制机制改革的意见》和国务院印发《关于“十四五”数字经济发展规划》等有关工作的部署要求&#xff0c;深入实…...

Vim youcompleteme Windows 安装保姆级教程

不说废话。 准备 检查 Vim 的 Python 配置 安装好 vim 和 python 后&#xff08;python 必须 ≥ \ge ≥ 3.6&#xff09;&#xff0c;在 cmd 下运行 vim --version会弹出以下窗口。 如果发现 python/dyn 和 python3/dyn 都是 - &#xff08;我不知道只有前者是 能不能运行…...

港迪技术IPO提交注册,拟募资6.56亿元

武汉港迪技术股份有限公司&#xff08;下称“港迪技术”&#xff09;拟在创业板IPO上市&#xff0c;并于近期在深交所提交招股书&#xff08;注册稿&#xff09;&#xff0c;进入提交注册阶段。 港迪技术IPO招股书&#xff08;注册稿&#xff09;显示&#xff0c;公司是一家专…...

retinaface在ubuntu20.04(wsl2)下使用tensorrt(c++)部署

1. 参考博客&#xff1a; 1. Retinaface Tensorrt Python/C部署&#xff1a;https://blog.csdn.net/weixin_45747759/article/details/124534079 2. B站视频教程&#xff1a;https://www.bilibili.com/video/BV1Nv4y1K727/ 3. Retinaface_…...

vue打包设置 自定义的NODE_ENV

默认NODE_ENV 自定义process.env.NODE_ENV的值_process.node.env的值-CSDN博客 ‌NODE_ENV开发环境下&#xff1a;NODE_ENVdevelopment(默认) 生产环境下&#xff1a;NODE_ENVproduction(默认) NODE_ENV 除了默认的 development 和 production 以外&#xff0c;确实可以自定义…...

python爬虫521

爬虫521 记录 记录 最近想学爬虫&#xff0c;尝试爬取自己账号下的文章标题做个词云 csdn有反爬机制 原理我就不说啦 大家都写了 看到大家结果是加cookie 但是我加了还是521报错 尝试再加了referer 就成功了(╹▽╹) import matplotlib import requests from wordcloud impor…...

CSS中flex:1是什么属性

flex: 1 是 CSS 中的一个简写属性&#xff0c;用于设置 Flex 项目的灵活伸缩比例&#xff08;flex-grow&#xff09;、收缩比例&#xff08;flex-shrink&#xff09;以及基础大小&#xff08;flex-basis&#xff09;。具体来说&#xff0c;flex: 1 实际上是以下三个属性的简写&…...

网络硬件升级指南:提升性能的策略与实践

随着企业对网络依赖程度的增加&#xff0c;网络性能的提升已成为信息技术部门的首要任务。本文将探讨如何通过升级网络硬件来提高网络性能&#xff0c;包括选择正确的硬件、实施升级策略和考虑未来网络的可扩展性。 一、网络性能的重要性 在数字化时代&#xff0c;网络是企业…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...