Bitmap PrepareBadgeViewBitmap(SolutionBadgeView badgeView, System.Windows.Size size) { try { (badgeView).Measure(size); (badgeView).Arrange(new System.Windows.Rect(size)); (badgeView).Refresh(); RenderTargetBitmap targetBitmap = new RenderTargetBitmap((int)size.Width, (int)size.Height, 96.0, 96.0, PixelFormats.Default); targetBitmap.Render(badgeView); BmpBitmapEncoder encoder = new BmpBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(targetBitmap)); MemoryStream ms = new MemoryStream(); encoder.Save(ms); ms.Flush(); var badgeBitmap = System.Drawing.Image.FromStream(ms) as Bitmap; return(badgeBitmap); } catch (Exception ex) { ex.TryAddContextData("size", () => size); throw; } }
void RefreshIconicBitmap(SolutionBadgeView view) { lock (Sync) { if (CurrentBadgeIconicBitmap != null) { CurrentBadgeIconicBitmap.Dispose(); } CurrentBadgeIconicBitmap = PrepareBadgeViewBitmap(view, new System.Windows.Size(196, 106)); } }
SolutionBadgeView GetSolutionBadgeView() { var view = new SolutionBadgeView(); // NOTE: this will be used outside of application Visual Tree // must initialize manually view.BeginInit(); view.EndInit(); view.ApplyTemplate(); var all_properties = new Dictionary <string, object>(); all_properties.AddOrUpdateFrom(CurrentBadgeInfo); all_properties.AddOrUpdateFrom(CurrentThemeInfo); view.ViewModel.RefreshFrom(all_properties); return(view); }