venerdì 7 novembre 2025

C# creare una nuova immagine con effetto sotto sopra da un'immagine a colori esistente in .Net 9

 

C# effetto sopra e sotto

In questo esempio di codice nel linguaggio di programmazione C#, vedremo come applicare ad un'immagine esistente, un effetto di ruotare l'immagine sotto e sopra, il tutto come mostrato nella figura precedente.

Utilizzeremo le classi messe a disposizione dallo spazio dei nomi "System.Drawing", in ambiente "Windows Forms" e con la versione .Net 9, al momento ultima versione rilasciata.


Passiamo in visualizzazione codice ed in alto, sopra ad ogni dichiarazione, inseriamo il codice per aggiungere lo spazio dei nomi di "System.Drawing".

C#

using System.Drawing.Drawing2D;

using System.Drawing.Imaging;


Di seguito il codice da inserire nell'evento click del pulsante, che permette di rivoltare l'immagine, sopra e sotto.


C#

private void BtnSottoSopra_Click(object sender, EventArgs e)

{

 

try

{

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

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

//Rilevo l'immagine originale

using (Bitmap bmpImmagineOriginale = new Bitmap(percorsoNomeFileOriginale))

{

int width = bmpImmagineOriginale.Width;

int height = bmpImmagineOriginale.Height;

//Crea una nuova immagine invertendo la posizione

using (Bitmap bmpNuovaImmagine = new Bitmap(width, height))

{

//Inverte l'immagine verticalmente

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

{

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

{

//Rileva il colore del pixel dall'immagine originale

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

// Imposta il pixel nella nuova immagine, invertendo la coordinata y

// La riga y dell'immagine originale diventa la riga (height - 1 - y) nell'immagine capovolta.

bmpNuovaImmagine.SetPixel(x, height - 1 - y, pixelColor);

}

}

bmpNuovaImmagine.Save(percorsoNomeNuovoFile);

MessageBox.Show("Immagine con effetto sotto e sopra creata con successo.");

}

}

}

catch (System.Exception ex)

{

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

}

}

Nessun commento: