C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜

时间:2021-11-21 01:52:26

//向右旋转图像90°代码如下:  

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)  

{  

Graphics g = e.Graphics;  

Bitmap bmp = new Bitmap("rama.jpg");//加载图像  

g.FillRectangle(Brushes.White, this.ClientRectangle);//填充窗体背景为白色  

Point[] destinationPoints = {  

new Point(100, 0), // destination for upper-left point of original  

new Point(100, 100),// destination for upper-right point of original  

new Point(0, 0)}; // destination for lower-left point of original  

g.DrawImage(bmp, destinationPoints);  

}  

  

//旋转图像180°代码如下:  

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)  

{  

Graphics g = e.Graphics;  

Bitmap bmp = new Bitmap("rama.jpg");  

g.FillRectangle(Brushes.White, this.ClientRectangle);  

Point[] destinationPoints = {  

new Point(0, 100), // destination for upper-left point of original  

new Point(100, 100),// destination for upper-right point of original  

new Point(0, 0)}; // destination for lower-left point of original  

g.DrawImage(bmp, destinationPoints);  

}  

  

//图像切变代码:  

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)  

{  

Graphics g = e.Graphics;  

Bitmap bmp = new Bitmap("rama.jpg");  

g.FillRectangle(Brushes.White, this.ClientRectangle);  

Point[] destinationPoints = {  

new Point(0, 0), // destination for upper-left point of original  

new Point(100, 0), // destination for upper-right point of original  

new Point(50, 100)};// destination for lower-left point of original  

g.DrawImage(bmp, destinationPoints);  

}  

  

//图像截取:  

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)  

{  

Graphics g = e.Graphics;  

Bitmap bmp = new Bitmap("rama.jpg");  

g.FillRectangle(Brushes.White, this.ClientRectangle);  

Rectangle sr = new Rectangle(80, 60, 400, 400);//要截取的矩形区域  

Rectangle dr = new Rectangle(0, 0, 200, 200);//要显示到Form的矩形区域  

g.DrawImage(bmp, dr, sr, GraphicsUnit.Pixel);  

}  

  

//改变图像大小:  

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)  

{  

Graphics g = e.Graphics;  

Bitmap bmp = new Bitmap("rama.jpg");  

g.FillRectangle(Brushes.White, this.ClientRectangle);  

int width = bmp.Width;  

int height = bmp.Height;  

// 改变图像大小使用低质量的模式  

g.InterpolationMode = InterpolationMode.NearestNeighbor;  

g.DrawImage(bmp, new Rectangle(10, 10, 120, 120), // source rectangle  

new Rectangle(0, 0, width, height), // destination rectangle  

GraphicsUnit.Pixel);  

// 使用高质量模式  

//g.CompositingQuality = CompositingQuality.HighSpeed;  

g.InterpolationMode = InterpolationMode.HighQualityBicubic;  

g.DrawImage(  

bmp,  

new Rectangle(130, 10, 120, 120),   

new Rectangle(0, 0, width, height),  

GraphicsUnit.Pixel);  

}  

  

//设置图像的分辩率:  

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)  

{  

Graphics g = e.Graphics;  

Bitmap bmp = new Bitmap("rama.jpg");  

g.FillRectangle(Brushes.White, this.ClientRectangle);  

bmp.SetResolution(300f, 300f);  

g.DrawImage(bmp, 0, 0);  

bmp.SetResolution(1200f, 1200f);  

g.DrawImage(bmp, 180, 0);  

}  

  

//用GDI+画图  

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)  

{  

Graphics gForm = e.Graphics;  

gForm.FillRectangle(Brushes.White, this.ClientRectangle);  

for (int i = 1; i <= 7; ++i)  

{  

//在窗体上面画出橙色的矩形  

Rectangle r = new Rectangle(i*40-15, 0, 15,  

this.ClientRectangle.Height);  

gForm.FillRectangle(Brushes.Orange, r);  

}  

//在内存中创建一个Bitmap并设置CompositingMode  

Bitmap bmp = new Bitmap(260, 260,  

System.Drawing.Imaging.PixelFormat.Format32bppArgb);  

Graphics gBmp = Graphics.FromImage(bmp);  

gBmp.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;  

// 创建一个带有Alpha的红色区域  

// 并将其画在内存的位图里面  

Color red = Color.FromArgb(0x60, 0xff, 0, 0);  

Brush redBrush = new SolidBrush(red);  

gBmp.FillEllipse(redBrush, 70, 70, 160, 160);  

// 创建一个带有Alpha的绿色区域  

Color green = Color.FromArgb(0x40, 0, 0xff, 0);  

Brush greenBrush = new SolidBrush(green);  

gBmp.FillRectangle(greenBrush, 10, 10, 140, 140);  

//在窗体上面画出位图 now draw the bitmap on our window  

gForm.DrawImage(bmp, 20, 20, bmp.Width, bmp.Height);  

// 清理资源  

bmp.Dispose();  

gBmp.Dispose();  

redBrush.Dispose();  

greenBrush.Dispose();  

}  

  

//在窗体上面绘图并显示图像  

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)  

{  

Graphics g = e.Graphics;  

Pen blackPen = new Pen(Color.Black, 1);  

if (ClientRectangle.Height / 10 > 0)  

{  

for (int y = 0; y < ClientRectangle.Height; y += ClientRectangle.Height / 10)  

{  

g.DrawLine(blackPen, new Point(0, 0), new Point(ClientRectangle.Width, y));  

}  

}  

blackPen.Dispose();  

}