2016-05-23 4 views
0

私の画像に助けが必要です。私はちょうど私の画面を保存したいと喜んで私はできます。しかし、いくつかのソフトウェアは、それらを正しく見ることができません。例えば:私はFacebookの中で私の画像(.JPG)を入れ、またはペイントで開き 場合、それはこのようになります。 Image looking fine!透明性の問題:一部のソフトウェアで、WPFの「printscreen」が正しく表示されない.jpg

が、私は、デフォルトで同じ画像(正確に同じ画像)を開いた場合Windowsプログラムまたは一部が、それは次のように表示されます。

private void btSalvar_Click_1(object sender, RoutedEventArgs e) 
    { 
     BitmapSource bmp = VisualToBitmap.Render(gridSalvar); 
     Microsoft.Win32.SaveFileDialog dialog = new Microsoft.Win32.SaveFileDialog(); 
     dialog.Filter = "Imagem JPG(*.jpg)|*.jpg"; 
     if (dialog.ShowDialog() == true) 
     { 
      System.Windows.Media.Imaging.PngBitmapEncoder encoder = new PngBitmapEncoder(); 
      encoder.Frames.Add(BitmapFrame.Create(bmp)); 
      System.IO.FileStream fs = new System.IO.FileStream(dialog.FileName, System.IO.FileMode.Create); 
      encoder.Save(fs); 
      fs.Close(); 
     } 

アン:だから

Crappy Image

、私は私のWPFアプリケーションで "PrintScreenを" これをやっていた、ここに私のコードですこのように作成されたクラス:

class VisualToBitmap 
{ 
    public static System.Windows.Media.Imaging.BitmapSource Render(System.Windows.Media.Visual Visual, int Resolution = 96) 
    { 
     System.Windows.Media.Imaging.RenderTargetBitmap render; 
     double width, height; 
     int pixelWidth, pixelHeight; 
     width = (double)Visual.GetValue(System.Windows.FrameworkElement.ActualWidthProperty); 
     height = (double)Visual.GetValue(System.Windows.FrameworkElement.ActualHeightProperty); 
     pixelWidth = Convert.ToInt32((width/96) * Resolution); 
     pixelHeight = Convert.ToInt32((height/96) * Resolution); 
     render = new System.Windows.Media.Imaging.RenderTargetBitmap(
      pixelWidth, pixelHeight, Resolution, Resolution, 
      System.Windows.Media.PixelFormats.Pbgra32); 
     render.Render(Visual); 
     return render; 
    } 
} 

誰かがこれを修正するのを手伝ってください。 ありがとうございました!

+0

問題を確実に再現する良い[mcve]がなければ、修正する必要があることを確実に知ることは不可能です。しかし、私の最初の提案は、XAMLのルート要素が不透明な背景を持っていることを確認することです。例えば。 'Background =" White "'を設定します。 –

+0

追加のヒントについてはhttp://stackoverflow.com/q/5464800も参照してください。 –

+0

OMG、私はそれがちょうどこれだとも信じられません。どのようなルーキーミス!真剣に、これのためにありがとう。私はちょうど箱の外で考える必要があると思う。本当に感謝@PeterDuniho –

答えて

0

まあ、ピーター・ドゥニホのように、それはルーキーミスでした。グリッドに背景を追加するだけで、このトリックができました。

関連する問題