giovedì 6 novembre 2025

C# creare una nuova immagine con effetto metà colori e metà in bianco nero da un'immagine a colori esistente in .Net 9

 

C# effetto grafico colori e bianco e nero

In questo frammento di codice del linguaggio di programmazione C#, vedremo come creare una nuova immagine da una esistente, con l'effetto per metà a colori e per l'altra metà in bianco  e nero.

Utilizzeremo l'ultima versione del Framework .Net 9, nel momento in cui si sta scrivendo.

Tramite lo spazio dei nomi "System.Drawing" utilizzando le varie classi, applicheremo l'effetto grafico come mostrato nella figura precedente.

In visualizzazione codice, aggiungiamo lo spazio dei nomi per la gestione della grafica, in alto, sopra ad ogni dichiarazione, aggiungiamo lo spazio dei nomi Systema.Drawing, il tutto come mostrato qui di seguito.

C#

using System.Drawing.Drawing2D;

using System.Drawing.Imaging;


Nell'evento click di un pulsante nella form, aggiungiamo il seguente codice, che rileva dall'immagine originale, i vari pixel, e verifica se è la parte grafica si trova nella prima metà oppure nella seconda, in caso della seconda metà, applica il colore della scala dei colori grigi .

Di seguito il frammento di codice delle suddette operazioni.


C#

private void BtnColoriBiancoNero_Click(object sender, EventArgs e)

{

string percorsoNomeFileOriginale = "C:\\varie\\uccelli.jpg";

string percorsoNomeNuovoFile = "C:\\varie\\uccelliColoriBiancoNero.jpg";

try

{

// Carica l'immagine originale

Bitmap bmpOriginale = new Bitmap(percorsoNomeFileOriginale);

int width = bmpOriginale.Width;

int height = bmpOriginale.Height;

//Nuova immagine

Bitmap bmpNuovaImmagine = new Bitmap(width, height);

// Elabora i pixel

for (int x = 0; x < width; x++)

{

for (int y = 0; y < height; y++)

{

Color pixelColor = bmpOriginale.GetPixel(x, y);

if (x < width / 2) // Metà sinistra a colori

{

bmpNuovaImmagine.SetPixel(x, y, pixelColor);

}

else // Metà destra in bianco e nero

{

int grayValue = (int)(pixelColor.R * 0.3 + pixelColor.G * 0.59 + pixelColor.B * 0.11);

Color grayColor = Color.FromArgb(grayValue, grayValue, grayValue);

bmpNuovaImmagine.SetPixel(x, y, grayColor);

}

}

}

//Salvo Nuova Immagine

bmpNuovaImmagine.Save(percorsoNomeNuovoFile);

// Rilascia le risorse

bmpOriginale.Dispose();

bmpNuovaImmagine.Dispose();

MessageBox.Show("Immagine creata con successo!");

}

catch (System.Exception ex)

{

MessageBox.Show("Errore: " + ex.Message);

}

}





Nessun commento: