Hallo!
Ich habe ein großes Problem und hoffe ihr könnt mir helfen es zu lösen.
Vor kurzem habe ich eine WPF-Anwendung geschrieben, bei dem man ein Fenster über den Bildschirm zieht und sich den dahinterliegenden Bildausschnitt mit einem Farbfilter umwandeln lässt. Das umgewandelte Bild wird mit einem Image im Fenster dargestellt. Das Programm läuft unter Windows XP ohne Probleme. Unter Windows Vista und Windows 7 erscheint in dem Fenster jedoch immer ein Bild vom vorherigen umgewandelten Bild, obwohl ich das Image vor dem CopyFromScreen auf Hidden setze, es wird immer mit umgewandelt.
Mir fällt nichts mehr dazu ein.
Hier ein paar C# Codeausschnitte:
private void OnWindowLocationChanged(object sender, EventArgs e)
{
_Image.Visibility = Visibility.Hidden;
ConvertScreenshot();
}
private void ConvertScreenshot()
{
if (_Ms != null)
{
_Ms.Dispose();
}
GetBitmap();
//hier erfolgt dann die Umwandlung von _Bmp
_Ms = new MemoryStream();
_Bmp.Save(_Ms, ImageFormat.Bmp);
_Image.Source = BitmapFrame.Create(_Ms);
_Image.Visibility = Visibility.Visible;
}
private void GetBitmap()
{
_Bmp = new Bitmap(Convert.ToInt32(ActualWidth -BorderThickness.Left - BorderThickness.Right), Convert.ToInt32(ActualHeight - BorderThickness.Top - BorderThickness.Bottom - _Menu.ActualHeight));
Graphics g = Graphics.FromImage(_Bmp);
g.CopyFromScreen(Convert.ToInt32(Left + BorderThickness.Left), Convert.ToInt32(Top + BorderThickness.Top + _Menu.ActualHeight), 0, 0, new System.Drawing.Size(_Bmp.Width, _Bmp.Height));
}