当前位置: 首页 > 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;网络是企业…...

谷歌浏览器插件

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

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

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

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

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...