2011-08-13 14 views
1

私はWPF/c#でgeckoFXを使用してウェブサイトの画像を作成しようとしています。コードを実行すると、エラーが発生します。geckoFxでウェブサイトのサムネイルを作成するとエラーが発生する

エラーがビットマップの幅と高さ

geckoWebBorwser(int型)wWidth及び(int型) エラーテキストがあるwHeight(パラメータが有効ではありません)と、System.ArgumentExceptionの

から使用してエラーがライン上で

Bitmap bmp = new Bitmap(wWidth, wHeight); //Error here (Parameter is not valid. 
を発生しています

System.ArgumentExceptionの)

例コード:

class GetWebCapture 
{ 
    public static BitmapSource GetThumb(Skybound.Gecko.GeckoWebBrowser wb, int w, int h, int wWidth, int wHeight) 
    { 
     if (wb != null) 
     { 

      Bitmap bmp = new Bitmap(wWidth, wHeight); 


      Rectangle rec = new Rectangle(0, 0, wWidth, wHeight); 
      Rectangle rec1 = new Rectangle(0, 0, w, h); 

      wb.DrawToBitmap(bmp, rec); 

      Graphics gfx = Graphics.FromImage(bmp); 
      gfx.CompositingQuality = CompositingQuality.HighQuality; 
      gfx.SmoothingMode = SmoothingMode.HighQuality; 
      gfx.InterpolationMode = InterpolationMode.HighQualityBicubic; 


      gfx.DrawImage(bmp, rec); 

      Bitmap newImage = new Bitmap(290, 200); 

      using (Graphics gr = Graphics.FromImage(newImage)) 
      { 
       gr.SmoothingMode = SmoothingMode.AntiAlias; 
       gr.InterpolationMode = InterpolationMode.HighQualityBicubic; 
       gr.PixelOffsetMode = PixelOffsetMode.HighQuality; 

       gr.DrawImage(bmp, new Rectangle(0, 0, 290, 200)); 
      } 

      BitmapSource source = loadBitmaps(newImage); 


      gfx.Dispose(); 
      bmp.Dispose(); 

      return source; 

     } 
     else 
     { 

      return null; 
     } 

    public static BitmapSource loadBitmaps(System.Drawing.Bitmap source) 
    { 
     return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(source.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, 
      System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()); 
    } 
} 

WebKit.Netでは、このメソッドはうまくいきます。IE webBrowserでは、別のメソッドがあり、このメソッドは正常に動作しますが、私のプロジェクトには適していません。

+0

どのようなエラーが表示されますか?あなたの投稿を編集して、さらに詳しい情報を提供してください。私はそれを少し改造してより良い読書のために – Sascha

+0

あなたはパラメータ値を提供できますか? – Sascha

答えて

0

私は小さなサンプルを作成しました(geckoFxは不明でしたが面白そうでした)。次のコードは正常に動作:

namespace WebsiteScreeshot { 
    class Program { 
    static void Main (string[] args) { 
     if (args.Length != 2) { 
     Console.WriteLine("You need to provide URL and image"); 
     return; 
     } 

     Xpcom.Initialize(@"C:\Libs\xulrunner"); 
     var browser = new GeckoWebBrowser(); 
     browser.CreateControl(); 
     while (!browser.IsHandleCreated) { 
     System.Threading.Thread.Sleep(200); 
     System.Windows.Forms.Application.DoEvents(); 
     } 
     browser.Navigate(args[0]); 
     while (browser.IsBusy) { 
     System.Threading.Thread.Sleep(200); 
     System.Windows.Forms.Application.DoEvents(); 
     } 
     browser.Width = 1044; 
     browser.Height = 768; 
     using (Bitmap bmp = new Bitmap(1024, 768)) { 
     Rectangle rec = new Rectangle(0, 0, 1024, 768); 
     browser.DrawToBitmap(bmp, rec); 
     bmp.Save(args[1]); 
     } 
     browser = null; 
    } 
    } 
} 

私は再ブラウザは長方形の少なくともサイズであるような大きなかったとき、私はbrowser.DrawToImageでエラーが発生しました。

+0

if(wb.Width> 5)if(wb.Height> 5)if文で2つのupdadeコードを使用しています。 – doberman

関連する問題