我是C#的新手。我不知道出了什么问题...请修复错误,以便此代码可以正常工作。我想用C#裁剪图像。当这段代码有效时,我会研究它。
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
答案 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
方法。但是现在上面的示例应该适用于裁剪图像。一定要学习正确的语法。