C# Bitmap类学习1

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

cs 复制代码
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方法;

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

相关推荐
你怎么知道我是队长5 小时前
C语言---头文件
c语言·开发语言
期待のcode5 小时前
Java虚拟机的运行模式
java·开发语言·jvm
我是唐青枫5 小时前
C#.NET ConcurrentDictionary<TKey, TValue> 深度解析:原理与实践
c#·.net
hqwest5 小时前
码上通QT实战25--报警页面01-报警布局设计
开发语言·qt·qwidget·ui设计·qt布局控件
a程序小傲5 小时前
京东Java面试被问:动态规划的状态压缩和优化技巧
java·开发语言·mysql·算法·adb·postgresql·深度优先
HellowAmy5 小时前
我的C++规范 - 玩一个小游戏
开发语言·c++·代码规范
徐先生 @_@|||6 小时前
Palantir Foundry 五层架构模型详解
开发语言·python·深度学习·算法·机器学习·架构
tang777896 小时前
爬虫如何绕过绕过“5秒盾”Cloudflare:从浏览器指纹模拟到Rust求解之不完全指南
开发语言·爬虫·rust·cloudflare
Yuer20257 小时前
什么是 Rust 语境下的“量化算子”——一个工程对象的最小定义
开发语言·后端·rust·edca os·可控ai
hqwest7 小时前
码上通QT实战26--系统设置01-系统设置布局
开发语言·qt·qss·qt基础控件·qt布局控件·qt表格控件