locomarco
Commander
- Registriert
- Aug. 2009
- Beiträge
- 2.446
Hi,
ich hab hier ne Methode um ein Bitmap in Graustufen umzuwandeln.
Die funktioniert auch so wie sie soll.
Das Ergebnis sieht man dann natürlich erst wenn alles fertig ist.
Jetzt wollte ich das aber so umbauen, das man dabei zusehen kann wie Pixel für Pixel geändert wird.
Hab das also in nen Timer gepackt und ein klein wenig umgebaut:
Ergebnis von toGreyscale():
Das vom Timer:
Ich verstehe einfach nicht warum das nicht Zeile für Zeile durchläuft.
Vielleicht sieht einer von euch den Fehler...
Grüße
ich hab hier ne Methode um ein Bitmap in Graustufen umzuwandeln.
Die funktioniert auch so wie sie soll.
Code:
private Bitmap toGreyscale(Bitmap source)
{
Bitmap outputImage = new Bitmap(source);
for (int y = 0; y < source.Height; y++)
{
for (int x = 0; x < source.Width; x++)
{
int r, g, b;
r = source.GetPixel(x, y).R;
g = source.GetPixel(x, y).G;
b = source.GetPixel(x, y).B;
int greyscale = (r + g + b) / 3;
Color greyscalecolor = new Color();
greyscalecolor = Color.FromArgb(greyscale, greyscale, greyscale);
outputImage.SetPixel(x, y, greyscalecolor);
}
}
return outputImage;
}
Jetzt wollte ich das aber so umbauen, das man dabei zusehen kann wie Pixel für Pixel geändert wird.
Hab das also in nen Timer gepackt und ein klein wenig umgebaut:
Code:
private void button1_Click(object sender, EventArgs e)
{
outputImage = new Bitmap(bmp);
x = 0;
y = 0;
t1.Start();
}
Code:
int x, y;
int r, g, b;
int greyscale;
Color greyscalecolor = new Color();
void t1_Tick(object sender, EventArgs e)
{
if (x < bmp.Width)
{
r = bmp.GetPixel(x, y).R;
g = bmp.GetPixel(x, y).G;
b = bmp.GetPixel(x, y).B;
greyscale = (r + g + b) / 3;
greyscalecolor = Color.FromArgb(greyscale, greyscale, greyscale);
outputImage.SetPixel(x, y, greyscalecolor);
pictureBox2.Image = outputImage;
pictureBox2.Refresh();
x++;
if (x >= bmp.Width)
{
y++;
x = 0;
}
}
}
Ergebnis von toGreyscale():
Das vom Timer:
Ich verstehe einfach nicht warum das nicht Zeile für Zeile durchläuft.
Vielleicht sieht einer von euch den Fehler...
Grüße