2009-12-02 9 views
5

私はこのペイントアプリケーションをやっています。それは一種のシンプルです。それは私が引っ張るパネルから成ります、そして、ついに私はJPGまたはBMPまたはPNGファイルとして保存します。パネルを画像として保存する

私のアプリケーションは完全に動作しますが、私が直面している問題は、出力を保存しているときにパネル上に描かれたものではなく、黒の画像だけです。

すべての私の仕事は私が

snapshot = (Bitmap)tempDraw.Clone(); 

を持っている(ものまで、ダウン)

Thepic = new Bitmap(panel1.ClientRectangle.Width, this.ClientRectangle.Height); 

として、マウスに保存され、それは通常の作業を保存したが、再びrsultは黒画像ですされていますパネルに含まれているものではありません。

+0

フィルターには「png」ではなく「pgn」があります。 –

+0

...私は自分自身で投稿を修正するだろうが、それはあなたの本当のソースから貼り付けられている場合は、それについて知りたいかもしれません... –

+0

そのokしかしまだ私は混乱しているなぜアウトはスティルブラックですImage – Tony

答えて

9

「クローン」メソッドを使用している可能性があります。

DrawToBitmap」を試してみてください。これは過去に私のために働いていました。 、あなたはこれを試すことができ、それは私のために働く

 int width = plotPrinter.Size.Width; 
     int height = plotPrinter.Size.Height; 

     Bitmap bm = new Bitmap(width, height); 
     plotPrinter.DrawToBitmap(bm, new Rectangle(0, 0, width, height)); 

     bm.Save(@"D:\TestDrawToBitmap.bmp", ImageFormat.Bmp); 
 Be aware of saving directly to the C directly as this is not 
     permitted with newer versions of window, try using SaveFileDialog. 
SaveFileDialog sf = new SaveFileDialog(); 
    sf.Filter = "Bitmap Image (.bmp)|*.bmp|Gif Image (.gif)|*.gif|JPEG Image (.jpeg)|*.jpeg|Png Image (.png)|*.png|Tiff Image (.tiff)|*.tiff|Wmf Image (.wmf)|*.wmf"; 
    sf.ShowDialog(); 
    var path = sf.FileName; 
+4

これは素晴らしい子コントロールを持たないコントロールの場合、コントロールに子コントロールがある場合、 'DrawToBitmap'は子供を 'z'の逆順に描画します(実際のコントロールの前にコントロールが描画されます)。 –

+0

あなたの解決策はたくさんあります。 – Tony

+0

cant find drawtobitmapメソッド –

0

代わりに私はMemoryStreamををsedの:

は、ここで "plotPrinter" と呼ばれる制御からビットマップを保存したサンプルです。

MemoryStream ms = new MemoryStream(); 
Bitmap bmp = new Bitmap(panel1.Width, panel1.Height); 
panel1.DrawToBitmap(bmp, new System.Drawing.Rectangle(0, 0, panel1.Width, panel1.Height)); 
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); //you could ave in BPM, PNG etc format. 
byte[] Pic_arr = new byte[ms.Length]; 
ms.Position = 0; 
ms.Read(Pic_arr, 0, Pic_arr.Length); 
ms.Close(); 
関連する問題