2015-08-08 71 views
-4

我是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 
+4

你应该leran基本的C#语法。创建类,方法等 – Backs

+0

你的'Form'类 –

+0

请修正错误,然后我会研究它的每一点。我已经熟悉类,方法等。co'z我有Javascript的经验 – user5192276

回答

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(源位图)的范围内。

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

+0

它是整个代码工作? – user5192276

+0

您可以通过调用它来使用代码:'cropAtRect(Bitmap,Rectangle)'Bitmap和Rectangle是你的参数。 –

+0

怎么样?............... – user5192276