117.info
人生若只如初见

怎么动态更改PictureBox图片的亮度、对比度或饱和度

要动态更改PictureBox图片的亮度、对比度或饱和度,可以使用以下步骤:

  1. 将PictureBox中的图片转换为Bitmap格式:
Bitmap bitmap = new Bitmap(pictureBox1.Image);
  1. 创建一个新的Bitmap对象来存储修改后的图片:
Bitmap newBitmap = new Bitmap(bitmap.Width, bitmap.Height);
  1. 定义需要修改的亮度、对比度和饱和度值:
float brightness = 0.1f; //亮度
float contrast = 1.5f; //对比度
float saturation = 1.5f; //饱和度
  1. 使用Graphics对象将原始图片绘制到新的Bitmap对象上,并在绘制时应用亮度、对比度和饱和度调整:
using (Graphics g = Graphics.FromImage(newBitmap))
{
    ImageAttributes attributes = new ImageAttributes();

    //亮度调整
    float[][] colorMatrixElements = {
        new float[] {1, 0, 0, 0, 0},
        new float[] {0, 1, 0, 0, 0},
        new float[] {0, 0, 1, 0, 0},
        new float[] {0, 0, 0, 1, 0},
        new float[] {brightness, brightness, brightness, 0, 1}
    };
    ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);
    attributes.SetColorMatrix(colorMatrix);

    //对比度调整
    g.DrawImage(bitmap, new Rectangle(0, 0, bitmap.Width, bitmap.Height), 0, 0, bitmap.Width, bitmap.Height, GraphicsUnit.Pixel, attributes);

    //饱和度调整
    ImageAttributes saturationAttributes = new ImageAttributes();
    saturationAttributes.SetColorMatrix(new ColorMatrix
    {
        Matrix33 = saturation
    });

    g.DrawImage(newBitmap, new Rectangle(0, 0, newBitmap.Width, newBitmap.Height), 0, 0, newBitmap.Width, newBitmap.Height, GraphicsUnit.Pixel, saturationAttributes);
}
  1. 将修改后的图片显示在PictureBox中:
pictureBox1.Image = newBitmap;

通过以上步骤,可以动态更改PictureBox中图片的亮度、对比度和饱和度。您可以根据需要调整brightness、contrast和saturation的值来实现不同的效果。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe635AzsIBwdVDFY.html

推荐文章

  • 怎么处理PictureBox控件的Click事件

    处理PictureBox控件的Click事件可以通过以下步骤: 在窗体中找到你想要处理Click事件的PictureBox控件。
    双击该PictureBox控件,或者在属性窗口中找到Click...

  • 怎么使PictureBox控件透明

    在Winform应用程序中,PictureBox控件本身是不支持透明度的。但是可以通过以下方法实现PictureBox控件的透明效果: 使用带有透明度的图片:在PictureBox控件中显...

  • PictureBox中显示图片时怎么保持图片的比例

    保持图片的比例可以通过设置PictureBox的SizeMode属性来实现。SizeMode属性有多种选项可以选择,其中常用的选项有: Normal:图片保持原始大小,超出PictureBox的...

  • 在PictureBox中怎么实现图片的缩放

    在PictureBox中实现图片的缩放可以通过以下步骤实现: 将PictureBox的SizeMode属性设置为PictureBoxSizeMode.Zoom,这样图片会根据控件的大小等比例缩放显示。 使...

  • 在PictureBox中实现图片裁剪有哪些技巧

    在PictureBox中实现图片裁剪时,可以使用以下技巧: 使用Graphics对象:可以在PictureBox的Paint事件中获取Graphics对象,然后使用Graphics对象的DrawImage方法将...

  • 怎么通过鼠标滚轮控制PictureBox中的图片缩放

    要通过鼠标滚轮控制PictureBox中的图片缩放,可以通过以下步骤实现: 在窗体上添加一个PictureBox控件,并加载一张图片到PictureBox中。 在窗体的鼠标滚轮事件中...

  • PictureBox控件能否显示GIF动画

    PictureBox控件本身是支持显示静态图片的,但是无法直接显示GIF动画。要在PictureBox控件中显示GIF动画,可以通过一些方法实现,如使用第三方控件或自定义控件来...

  • 怎么通过PictureBox实现简单的动画效果

    通过PictureBox实现简单的动画效果,可以使用Timer控件来控制每一帧的显示。以下是一个示例代码:
    using System;
    using System.Drawing;
    using S...