Я пытаюсь настроить значения RGB, чтобы существенно затемнить или осветлить изображение в моем проекте процессора изображений. Было бы неплохо включить как затемнение, так и осветление в один элемент управления TrackBar, при этом нейтральное, неизменное изображение будет, когда ползунок установлен на 0 посередине.
Однако в настоящее время я все еще пытаюсь понять, как это сделать. только одна функция, например затемнение, на одном трекбаре.
После добавления элемента управления TrackBar (Min 0, Max 10
) в свой проект я использую событие trackbar_scroll
, чтобы определить, когда прокручивается TrackBar.
Я также закодировал его для затемнения изображения, вычитая определенное значение байта из RGB каждого пикселя image.
Полоса прокрутки успешно затемняет изображение, когда вы перемещаете его вправо, однако я хочу также отменить его затемнение, когда вы перемещаете TrackBar влево, возвращая его в исходное положение.
private void trbBrightness_Scroll(object sender, EventArgs e)
{
if (bitmapImage == null) return;
Byte Red, Green, Blue;
int iWidth = 320;
int iHeight = 240;
for (int i = 0; i < iWidth; i++)
{
for (int j = 0; j < iHeight; j++)
{
Color pixel = ImageArray[i, j];
Red = pixel.R;
Green = pixel.G;
Blue = pixel.B;
Color newColor =
Color.FromArgb(255,
Red - Convert.ToByte(Red * (trbBrightness.Value * 0.1)),
Green - Convert.ToByte(Green * (trbBrightness.Value * 0.1)),
Blue - Convert.ToByte(Blue * (trbBrightness.Value * 0.1)));
ImageArray[i, j] = newColor;
Прямо сейчас он просто затемняет изображение, как я этого хочу, однако я ожидаю, что при сдвиге влево ползунок в основном отменяет затемнение, когда вы перемещаете его вправо.
Есть ли способ определить, когда значение ползунка увеличивается, сделать это, а когда значение ползунка уменьшается, сделать это?
Я предполагаю, что мне нужно каким-то образом сохранить старое значение трекбара, чтобы я мог сравнить с новым?
где я могу получить:
if (trackbar value is increasing)
{
}
else if (trackbar value is decreasing)
{
}