2015-08-08 50 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