Я пытаюсь установить порог изображения во время выполнения. В настоящее время мой код выглядит так:

ImageAttributes imageAttr = new ImageAttributes();
imageAttr.SetThreshold(kryptonTrackBar1.Value / 100);

System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(pictureBox3.Image);
Graphics g = System.Drawing.Graphics.FromImage(bmp);
g.DrawImage(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0,
                 bmp.Width, bmp.Height, GraphicsUnit.Pixel, imageAttr);
pictureBox1.Image = bmp;

picturebox3 содержит черно-белое изображение. Проблема находится внутри строки imageAttr.SetThreshold(kryptonTrackBar1.Value / 100);.

Максимум моей панели трекбара равен 100, а минимум 0. Таким образом, при прокрутке трекбара я должен получить числа вроде 0,07 и т. Д., Но трекбар возвращает только значения 0 и 1! 1, если я прокручу до конца вправо!

Что с этим не так?

0
Euro2012 27 Июн 2012 в 00:16

1 ответ

Лучший ответ

Как насчет

imageAttr.SetThreshold((float)kryptonTrackBar1.Value / 100.0f);
3
Jaska 27 Июн 2012 в 00:22
Вот и все!! большое спасибо! Я новичок в С # (фон vb.net).
 – 
Euro2012
27 Июн 2012 в 00:26
Да. Вы пробовали разделить целочисленное значение 1–100 на целое значение 100, что всегда приводит к 0 или 1. Они должны быть преобразованы в числа с плавающей запятой, чтобы .NET понимал, что вам нужно деление с плавающей запятой.
 – 
Jaska
27 Июн 2012 в 00:28