private void ViewModel_DeviceRunAnalyzePicGenerated(DeviceRunAnalyzeDataInfo deviceRunAnalyze) { ScreenShot(deviceRunAnalyze); }
private void ScreenShot(DeviceRunAnalyzeDataInfo deviceRunAnalyze) { string filename = System.AppDomain.CurrentDomain.BaseDirectory + "\\DeviceRunAnalyzeRunTime.png"; if (File.Exists(filename)) //判断文件是否存在 { File.Delete(filename); } //保存到特定路径 FileStream fs = new FileStream(@filename, FileMode.Create); //对象转换成位图 RenderTargetBitmap bmp = new RenderTargetBitmap((int)this.runControl.ActualWidth + 80, (int)this.runControl.ActualHeight + 40, 100, 100, PixelFormats.Pbgra32); bmp.Render(this.runControl); //对象的集合编码转成图像流 BitmapEncoder encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(bmp)); //保存到路径中 encoder.Save(fs); //释放资源 fs.Close(); fs.Dispose(); //deviceRunAnalyze.RunTimePicPath = filename; BitmapImage image = new BitmapImage(); using (FileStream fileStream = File.OpenRead(filename)) { image.BeginInit(); image.CacheOption = BitmapCacheOption.OnLoad;//图像缓存到内存中,不会占用文件,没有被引用时会被自动回收。 image.StreamSource = fileStream; image.EndInit(); } deviceRunAnalyze.RunTimeImage = image; filename = System.AppDomain.CurrentDomain.BaseDirectory + "\\DeviceRunAnalyzeMaxValue.png"; if (File.Exists(filename)) //判断文件是否存在 { File.Delete(filename); } //保存到特定路径 fs = new FileStream(@filename, FileMode.Create); //对象转换成位图 bmp = new RenderTargetBitmap((int)this.maxControl.ActualWidth + 80, (int)this.maxControl.ActualHeight + 40, 100, 100, PixelFormats.Pbgra32); bmp.Render(this.maxControl); //对象的集合编码转成图像流 encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(bmp)); //保存到路径中 encoder.Save(fs); //释放资源 fs.Close(); fs.Dispose(); //deviceRunAnalyze.MaxValuePicPath = filename; image = new BitmapImage(); using (FileStream fileStream = File.OpenRead(filename)) { image.BeginInit(); image.CacheOption = BitmapCacheOption.OnLoad;//图像缓存到内存中,不会占用文件,没有被引用时会被自动回收。 image.StreamSource = fileStream; image.EndInit(); } deviceRunAnalyze.MaxValueImage = image; }