private async Task CreateNewIcon() {
var size = new Size(64, 64);
Result.Measure(size);
Result.Arrange(new Rect(size));
Result.Dispatcher.Invoke(DispatcherPriority.Render, EmptyDelegate);
await Task.Delay(100);
if (Skin == null) return;
// TODO: save style?
var bmp = new RenderTargetBitmap(64, 64, 96, 96, PixelFormats.Pbgra32);
bmp.Render(Result);
if (Model.Value != @"0" && Model.Value != Skin.SkinNumber &&
ShowMessage(string.Format(AppStrings.LiveryIcon_ChangeNumber_Message, Model.Value), AppStrings.LiveryIcon_ChangeNumber_Title,
MessageBoxButton.YesNo) == MessageBoxResult.Yes) {
Skin.SkinNumber = Model.Value;
}
try {
bmp.SaveAsPng(Skin.LiveryImage);
} catch (IOException e) {
NonfatalError.Notify(AppStrings.LiveryIcon_CannotChange, AppStrings.LiveryIcon_CannotChange_Commentary, e);
} catch (Exception e) {
NonfatalError.Notify(AppStrings.LiveryIcon_CannotChange, e);
}
}