private void ButtonOK_Click(object sender, EventArgs e) { var args = ApplyToArgument(); // validation if (args.FleetIDs == null || args.FleetIDs.Length == 0) { MessageBox.Show("出力する艦隊が指定されていません。", "入力値エラー", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); args.DisposeResources(); return; } if (args.HorizontalFleetCount <= 0 || args.HorizontalShipCount <= 0) { MessageBox.Show("艦隊・艦船の横幅は 1 以上にしてください。", "入力値エラー", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); args.DisposeResources(); return; } if (args.Fonts.Any(f => f == null)) { MessageBox.Show("未入力・不正なフォントが存在します。", "入力値エラー", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); args.DisposeResources(); return; } if (!OutputToClipboard.Checked) { if (string.IsNullOrWhiteSpace(OutputPath.Text)) { MessageBox.Show("出力先ファイル名が入力されていません。", "入力値エラー", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); args.DisposeResources(); return; } if (OutputPath.Text.ToCharArray().Intersect(Path.GetInvalidPathChars()).Any()) { MessageBox.Show("出力先に使用できない文字が含まれています。", "入力値エラー", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); args.DisposeResources(); return; } if (!DisableOverwritePrompt.Checked && File.Exists(OutputPath.Text)) { if (MessageBox.Show(Path.GetFileName(OutputPath.Text) + "\r\nは既に存在します。\r\n上書きしますか?", "上書き確認", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == System.Windows.Forms.DialogResult.No) { args.DisposeResources(); return; } } } int mode; if (ImageTypeCard.Checked) { mode = 0; } else if (ImageTypeCutin.Checked) { mode = 1; } else if (ImageTypeBanner.Checked) { mode = 2; } else { mode = 0; } try { if (!OutputToClipboard.Checked) { using (var image = GenerateFleetImage(args, mode)) { if (!Directory.Exists(Path.GetDirectoryName(OutputPath.Text))) { Directory.CreateDirectory(Path.GetDirectoryName(OutputPath.Text)); } switch (Path.GetExtension(OutputPath.Text).ToLower()) { case ".png": default: image.Save(OutputPath.Text, System.Drawing.Imaging.ImageFormat.Png); break; case ".bmp": case ".dib": image.Save(OutputPath.Text, System.Drawing.Imaging.ImageFormat.Bmp); break; case ".gif": image.Save(OutputPath.Text, System.Drawing.Imaging.ImageFormat.Gif); break; case ".tif": case ".tiff": image.Save(OutputPath.Text, System.Drawing.Imaging.ImageFormat.Tiff); break; case ".jpg": case ".jpeg": case ".jpe": case ".jfif": { // jpeg quality settings var encoderParams = new System.Drawing.Imaging.EncoderParameters(); encoderParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 90L); var codecInfo = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders().FirstOrDefault(codec => codec.MimeType == "image/jpeg"); image.Save(OutputPath.Text, codecInfo, encoderParams); } break; } if (OpenImageAfterOutput.Checked) { System.Diagnostics.Process.Start(OutputPath.Text); } } } else { using (var image = GenerateFleetImage(args, mode)) { Clipboard.SetImage(image); } } if (CurrentArgument != null) { CurrentArgument.DisposeResources(); } CurrentArgument = args; SaveConfiguration(); Utility.Logger.Add(2, "編成画像を出力しました。"); } catch (Exception ex) { ErrorReporter.SendErrorReport(ex, "編成画像の出力に失敗しました。"); MessageBox.Show("編成画像の出力に失敗しました。\r\n" + ex.GetType().Name + "\r\n" + ex.Message, "編成画像出力失敗", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { args.DisposeResources(); } Close(); }
private void ButtonOK_Click(object sender, EventArgs e) { var args = ApplyToArgument(); // validation if (args.FleetIDs == null || args.FleetIDs.Length == 0) { MessageBox.Show("Please select a fleet to export.", "Input Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); args.DisposeResources(); return; } if (args.HorizontalFleetCount <= 0 || args.HorizontalShipCount <= 0) { MessageBox.Show("The fleet must contain at least 1 ship.", "Input Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); args.DisposeResources(); return; } if (args.Fonts.Any(f => f == null)) { MessageBox.Show("The specified font does not exists.", "Input Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); args.DisposeResources(); return; } if (!OutputToClipboard.Checked) { if (string.IsNullOrWhiteSpace(OutputPath.Text)) { MessageBox.Show("Please enter the destination path.", "Input Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); args.DisposeResources(); return; } if (OutputPath.Text.ToCharArray().Intersect(Path.GetInvalidPathChars()).Any()) { MessageBox.Show("The destination path contains invalid characters.", "Input Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); args.DisposeResources(); return; } if (!DisableOverwritePrompt.Checked && File.Exists(OutputPath.Text)) { if (MessageBox.Show(Path.GetFileName(OutputPath.Text) + " already exists.\r\nDo you want to replace it?", "Overwrite Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == System.Windows.Forms.DialogResult.No) { args.DisposeResources(); return; } } } int mode; if (ImageTypeCard.Checked) { mode = 0; } else if (ImageTypeCutin.Checked) { mode = 1; } else if (ImageTypeBanner.Checked) { mode = 2; } else { mode = 3; } try { if (!OutputToClipboard.Checked) { using (var image = GenerateFleetImage(args, mode)) { if (!Directory.Exists(Path.GetDirectoryName(OutputPath.Text))) { Directory.CreateDirectory(Path.GetDirectoryName(OutputPath.Text)); } switch (Path.GetExtension(OutputPath.Text).ToLower()) { case ".png": default: image.Save(OutputPath.Text, System.Drawing.Imaging.ImageFormat.Png); break; case ".bmp": case ".dib": image.Save(OutputPath.Text, System.Drawing.Imaging.ImageFormat.Bmp); break; case ".gif": image.Save(OutputPath.Text, System.Drawing.Imaging.ImageFormat.Gif); break; case ".tif": case ".tiff": image.Save(OutputPath.Text, System.Drawing.Imaging.ImageFormat.Tiff); break; case ".jpg": case ".jpeg": case ".jpe": case ".jfif": { // jpeg quality settings var encoderParams = new System.Drawing.Imaging.EncoderParameters(); encoderParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 90L); var codecInfo = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders().FirstOrDefault(codec => codec.MimeType == "image/jpeg"); image.Save(OutputPath.Text, codecInfo, encoderParams); } break; } if (OpenImageAfterOutput.Checked) { System.Diagnostics.Process.Start(OutputPath.Text); } } } else { using (var image = GenerateFleetImage(args, mode)) { Clipboard.SetImage(image); } } if (CurrentArgument != null) { CurrentArgument.DisposeResources(); } CurrentArgument = args; SaveConfiguration(); Utility.Logger.Add(2, "Fleet image exported successfully."); } catch (Exception ex) { ErrorReporter.SendErrorReport(ex, "Failed to export fleet image."); MessageBox.Show("Failed to export fleet image.\r\n" + ex.GetType().Name + "\r\n" + ex.Message, "Export Failure", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { args.DisposeResources(); } Close(); }