您的位置:首页 > 编程语言 > C#

C#图像处理——1(各种旋转、改变大小)

2016-12-05 09:45 253 查看
一、各种旋转、改变大小
注意:先要添加画图相关的using引用。
//向右旋转图像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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c#
相关文章推荐