我想使用C#裁剪图像

时间:2015-08-08 07:48:21

标签: c#

我是C#的新手。我不知道出了什么问题...请修复错误,以便此代码可以正常工作。我想用C#裁剪图像。当这段代码有效时,我会研究它。

https://ideone.com/ljkaWZ

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1

    public static Bitmap cropAtRect(this Bitmap b, Rectangle r)
{
    Bitmap nb = new Bitmap(r.Width, r.Height);
    Graphics g = Graphics.FromImage(nb);
    g.DrawImage(b, -r.X, -r.Y);
    return nb;
}

ideone.com说:

prog.cs(13,10): error CS1514: Unexpected symbol `public', expecting `.' or `{'
prog.cs(13,18): error CS1525: Unexpected symbol `Bitmap', expecting `class', `delegate', `enum', `interface',      
`partial', or `struct'
Compilation failed: 2 error(s), 0 warnings

1 个答案:

答案 0 :(得分:0)

如果要裁剪图像,可以指定source矩形和destination矩形。在您的情况下,r将成为源代码,destRect下面的给定示例将成为创建新位图的目标。

public static Bitmap cropAtRect(Bitmap b, Rectangle r)
{
    Bitmap nb = new Bitmap(r.Width, r.Height);
    Graphics g = Graphics.FromImage(nb);
    Rectangle destRect = new Rectangle(0, 0, r.Width, r.Height); //Set destination rect
    g.DrawImage(b, destRect, r, GraphicsUnit.Pixel);
    return nb;
}

当然,您应验证给定的r(源矩形)是否在b(源位图)的范围内。

此外,我不确定您是否正在学习通过extension创建this方法。但是现在上面的示例应该适用于裁剪图像。一定要学习正确的语法。