0
私の画像に助けが必要です。私はちょうど私の画面を保存したいと喜んで私はできます。しかし、いくつかのソフトウェアは、それらを正しく見ることができません。例えば:私はFacebookの中で私の画像(.JPG)を入れ、またはペイントで開き 場合、それはこのようになります。 透明性の問題:一部のソフトウェアで、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();
}
アン:だから
、私は私の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;
}
}
誰かがこれを修正するのを手伝ってください。 ありがとうございました!
問題を確実に再現する良い[mcve]がなければ、修正する必要があることを確実に知ることは不可能です。しかし、私の最初の提案は、XAMLのルート要素が不透明な背景を持っていることを確認することです。例えば。 'Background =" White "'を設定します。 –
追加のヒントについてはhttp://stackoverflow.com/q/5464800も参照してください。 –
OMG、私はそれがちょうどこれだとも信じられません。どのようなルーキーミス!真剣に、これのためにありがとう。私はちょうど箱の外で考える必要があると思う。本当に感謝@PeterDuniho –