vs窗体trackBar进行图片亮度调节c#
时间: 2024-02-02 18:05:13 浏览: 95
是的,这段代码是用于实现一个基于 Windows 窗体的图像亮度调节器。具体来说,它使用一个 TrackBar 控件来获取用户设置的亮度值,并将其转换为浮点数 a。然后,如果 img2(图像)为 null 且 result 不为 null,则将其赋给变量 change 和 img2。接下来,如果 img2 不为 null,则将其与 a 相乘,生成新的 img2(即调整后的图像)。然后,使用 BitmapConverter 将调整后的图像转换为位图,并将其显示在名为 pictureBox1 的 PictureBox 控件中。最后,将调整后的图像存储在 result 变量中。
相关问题
vs窗体trackBar进行图片亮度调节c#代码
以下是一个简单的 Windows 窗体应用程序,可供您参考,其中包含用于实现图像亮度调节器的代码:
```csharp
using System;
using System.Drawing;
using System.Windows.Forms;
namespace ImageBrightnessAdjustment
{
public partial class MainForm : Form
{
private Bitmap originalImage;
private Bitmap adjustedImage;
public MainForm()
{
InitializeComponent();
}
private void MainForm_Load(object sender, EventArgs e)
{
// 加载图像
originalImage = new Bitmap("image.jpg");
pictureBox1.Image = originalImage;
// 初始化 TrackBar
trackBar1.Minimum = -100;
trackBar1.Maximum = 100;
trackBar1.TickFrequency = 10;
trackBar1.Value = 0;
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
// 计算亮度调整值
float brightness = (float)trackBar1.Value / 100.0f;
// 调整图像亮度
adjustedImage = AdjustBrightness(originalImage, brightness);
// 显示调整后的图像
pictureBox1.Image = adjustedImage;
}
private Bitmap AdjustBrightness(Bitmap image, float brightness)
{
Bitmap adjustedImage = new Bitmap(image.Width, image.Height);
// 锁定原始图像的位图数据
BitmapData originalData = image.LockBits(new Rectangle(0, 0, image.Width, image.Height),
ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
// 锁定调整后的图像的位图数据
BitmapData adjustedData = adjustedImage.LockBits(new Rectangle(0, 0, adjustedImage.Width, adjustedImage.Height),
ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);
// 获取每个像素的字节数
int pixelSize = 3;
// 循环遍历每个像素
unsafe
{
for (int y = 0; y < originalData.Height; y++)
{
byte* originalRow = (byte*)originalData.Scan0 + (y * originalData.Stride);
byte* adjustedRow = (byte*)adjustedData.Scan0 + (y * adjustedData.Stride);
for (int x = 0; x < originalData.Width; x++)
{
// 获取原始像素的 RGB 值
byte originalBlue = originalRow[x * pixelSize];
byte originalGreen = originalRow[x * pixelSize + 1];
byte originalRed = originalRow[x * pixelSize + 2];
// 计算调整后的像素值
byte adjustedBlue = (byte)(originalBlue * (1.0f + brightness));
byte adjustedGreen = (byte)(originalGreen * (1.0f + brightness));
byte adjustedRed = (byte)(originalRed * (1.0f + brightness));
// 将调整后的像素值写入调整后的图像
adjustedRow[x * pixelSize] = adjustedBlue;
adjustedRow[x * pixelSize + 1] = adjustedGreen;
adjustedRow[x * pixelSize + 2] = adjustedRed;
}
}
}
// 解锁位图数据
adjustedImage.UnlockBits(adjustedData);
image.UnlockBits(originalData);
return adjustedImage;
}
}
}
```
在这个例子中,我们将图像加载到名为 pictureBox1 的 PictureBox 控件中,并使用 TrackBar 控件接收用户的亮度调节值。然后,我们使用 AdjustBrightness() 方法来实现图像亮度调节的实际工作,该方法使用锁定位图数据的技术来直接访问每个像素并调整其亮度。最后,我们将调整后的图像显示在 pictureBox1 控件中。
vs窗体用TrackBar进行图片亮度调节c#
在 Windows 窗体上使用 `TrackBar` 控件调整图片亮度的实现方法与使用 `Button` 控件类似,只需要将 `Button` 的单击事件改为 `TrackBar` 的值变化事件。
以下是实现在 Windows 窗体上使用 `TrackBar` 控件调整图片亮度的代码:
```csharp
private void trackBar1_Scroll(object sender, EventArgs e)
{
// 获取当前图片
Bitmap bmp = (Bitmap) pictureBox1.Image;
// 获取亮度调整值(-255 到 255)
int brightness = trackBar1.Value;
// 调整亮度
Bitmap adjusted = AdjustBrightness(bmp, brightness);
// 显示调整后的图片
pictureBox1.Image = adjusted;
}
// 调整图片亮度的方法
private Bitmap AdjustBrightness(Bitmap bmp, int brightness)
{
// 创建亮度调整颜色矩阵
float b = brightness / 255.0f;
ColorMatrix cm = new ColorMatrix(new float[][]
{
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[] {b, b, b, 0, 1},
});
// 创建图像属性并应用颜色矩阵
ImageAttributes ia = new ImageAttributes();
ia.SetColorMatrix(cm);
// 创建调整后的图像
Bitmap adjusted = new Bitmap(bmp.Width, bmp.Height);
Graphics g = Graphics.FromImage(adjusted);
g.DrawImage(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height),
0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel, ia);
g.Dispose();
return adjusted;
}
```
在上面的代码中,我们使用 `TrackBar` 控件的 `Scroll` 事件来获取用户调整的亮度值。当用户移动 `TrackBar` 控件时,我们将调用名为 `trackBar1_Scroll` 的方法,该方法获取当前显示的图像并将其传递给名为 `AdjustBrightness` 的方法,该方法使用颜色矩阵调整图像的亮度。最后,我们将调整后的图像重新显示在 `PictureBox` 控件中。
阅读全文