In questo esempio di codice tramite linguaggio di programmazione C#, vedremo come applicare l'effetto riflesso ad un'immagine esistente a colori, in un progetto di tipo "Windows Application".
Tramite la versione di .Net 9, utilizzando le classi presenti nello spazio dei nomi "System.Drawing", verrà applicato tale effetto.
Aggiungiamo lo spazio dei nomi, in alto sopra ad ogni dichiarazione.
Si riporta il codice delle suddette operazioni.
C#
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
Di seguito il codice da inserire nell'evento click di un pulsante, che crea una nuova immagine con effetto riflesso.
C#
private void BtnEffettoSpecchio_Click(object sender, EventArgs e)
{
string inputPath = "C:\\varie\\uccelli.jpg";
string outputPath = "C:\\varie\\uccelliSpecchio.jpg";
using (Bitmap original = new Bitmap(inputPath))
{
int reflectionHeight = original.Height / 2; // metà altezza per riflesso
int newHeight = original.Height + reflectionHeight;
using (Bitmap result = new Bitmap(original.Width, newHeight))
using (Graphics g = Graphics.FromImage(result))
{
g.Clear(Color.White);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
// Disegna immagine originale in alto
g.DrawImage(original, 0, 0, original.Width, original.Height);
// Crea riflesso ruotato di 180°
using (Bitmap reflection = new Bitmap(original))
{
reflection.RotateFlip(RotateFlipType.Rotate180FlipNone);
// Disegna solo metà del riflesso
Rectangle srcRect = new Rectangle(0, 0, reflection.Width, reflectionHeight);
Rectangle destRect = new Rectangle(0, original.Height, reflection.Width, reflectionHeight);
g.DrawImage(reflection, destRect, srcRect, GraphicsUnit.Pixel);
}
// Applica sfumatura sul riflesso
Rectangle gradientRect = new Rectangle(0, original.Height, original.Width, reflectionHeight);
using (LinearGradientBrush brush = new LinearGradientBrush(gradientRect,
Color.FromArgb(120, Color.White), Color.FromArgb(0, Color.White), LinearGradientMode.Vertical))
{
g.FillRectangle(brush, gradientRect);
}
result.Save(outputPath, ImageFormat.Jpeg);
}
}
MessageBox.Show("Immagine salvata con successo!");
}

Le opere pubblicate in questo blog sono sotto la licenza Creative Commons. Attribuzione- No commerciale e no derivate.
Nessun commento:
Posta un commento