From 182b168b572ba1c9b9142f4435b415866b34679e Mon Sep 17 00:00:00 2001 From: sunhonglei Date: Tue, 14 Jan 2025 11:12:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:log=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ViewModel/Grading/GradingResultVM.cs | 134 +++++++++++++++++++++++++++ Views/Dialog/ExportDialog.xaml.cs | 4 +- Views/Dialog/JsonImport.xaml.cs | 3 + Views/Dialog/MessageBox.xaml.cs | 3 + Views/Grading/GradingResult.xaml.cs | 3 + 5 files changed, 146 insertions(+), 1 deletion(-) diff --git a/ViewModel/Grading/GradingResultVM.cs b/ViewModel/Grading/GradingResultVM.cs index 73a4cad..055d428 100644 --- a/ViewModel/Grading/GradingResultVM.cs +++ b/ViewModel/Grading/GradingResultVM.cs @@ -23,6 +23,15 @@ using SparkClient.Views.UserControl.ViewportData.Helper; using System.Diagnostics.Metrics; using log4net; using SparkClient.ViewModel.Configuration; +using System.Drawing.Printing; +using System.Drawing; +using RectangleF = System.Drawing.RectangleF; +using FontFamily = System.Drawing.FontFamily; +using FontStyle = System.Drawing.FontStyle; +using NPOI.SS.Formula.Functions; +using System.Windows.Media; +using Brush = System.Drawing.Brush; +using Brushes = System.Drawing.Brushes; namespace SparkClient.ViewModel.Grading; /// @@ -828,6 +837,7 @@ public class GradingResultVM : BaseViewModel } } SaveTestResult(SaveStatus.SaveAs); + //PrintLabel(); } catch (Exception ex) { @@ -1644,6 +1654,130 @@ public class GradingResultVM : BaseViewModel } #endregion + public void PrintLabel() + { + PrintDocument printDoc = new PrintDocument(); + printDoc.PrintPage += new PrintPageEventHandler(PrintPageHandler); + printDoc.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("Custom", 550, 300); + + PrintDialog printDialog = new PrintDialog(); + printDialog.Document = printDoc; + + if (printDialog.ShowDialog() == DialogResult.OK) + { + printDoc.Print(); + } + } + + private void PrintPageHandler(object sender, PrintPageEventArgs e) + { + var result = algorithmResult.measurements; + int startX = 10; + int startY = 10; + var col2X = startX + 90; + var col3X = col2X + 70; + // 设置字体 + Font font = new Font(FontFamily.GenericSerif, 12, FontStyle.Bold); + + // 设置颜色 + Brush brush = Brushes.Black; + + // 设置对齐方式 + StringFormat format = new StringFormat(); + format.Alignment = StringAlignment.Center; // 水平居中 + format.LineAlignment = StringAlignment.Center; // 垂直居中 + + // 绘制文本 + // 第一行 + int X = startX; + int Y = startY; + e.Graphics.DrawString(Standard, font, brush, new PointF(X, Y)); + X += 70; + e.Graphics.DrawString(Shape, font, brush, new PointF(X, Y)); + X += 50; + e.Graphics.DrawString($"ID:{DiamondCode}", font, brush, new PointF(X, Y)); + X += 100; + e.Graphics.DrawString($"Weight:{Wight}ct.", font, brush, new PointF(X, Y)); + X += 120; + Brush backgroundBrush = new SolidBrush(System.Drawing.Color.Black); // 背景色为黄色 + e.Graphics.FillRectangle(backgroundBrush, new RectangleF(X, Y, 200, font.Height)); + e.Graphics.DrawString(CutLevelTotal, font, Brushes.White, new PointF(X, Y)); + + // 第二行 + X = startX; + Y += font.Height; + e.Graphics.DrawString("Diameter", font, brush, new PointF(X, Y)); + + e.Graphics.DrawString($"{FormatDouble_D(result.DIAMETER)}mm", font, brush, new PointF(col2X, Y)); + + e.Graphics.DrawString($"({FormatDouble_D(result.M1)}mm-{FormatDouble_D(result.M2)}mm)", font, brush, new PointF(col3X, Y)); + e.Graphics.DrawString($"0.3%", font, brush, new PointF(310, Y)); + e.Graphics.FillRectangle(backgroundBrush, new RectangleF(350, Y, 200, font.Height)); + e.Graphics.DrawString(SymLevelTotal, font, Brushes.White, new PointF(X, Y)); + + // 第三行 + X = startX; + Y += font.Height; + e.Graphics.DrawString("Total Dep.", font, brush, new PointF(X, Y)); + X = col2X; + e.Graphics.DrawString($"{FormatDouble_D(result.DIAMETER * result.TOTAL_DEPTH)}mm", font, brush, new PointF(X, Y)); + X = col3X; + e.Graphics.DrawString($"{FormatDouble_P(result.TOTAL_DEPTH)}%", font, brush, new PointF(X, Y)); + e.Graphics.DrawString($"{DtResults.Where(X=> "TOTAL_DEPTH".Equals(X.TestItemId)).Select(X=>X.CutLevel).FirstOrDefault()}", font, brush, new PointF(480, Y)); + // 第四行 + X = startX; + Y += font.Height; + e.Graphics.DrawString("Table", font, brush, new PointF(X, Y)); + X = col2X; + e.Graphics.DrawString($"{FormatDouble_D(result.DIAMETER * result.TABLE)}mm", font, brush, new PointF(X, Y)); + X = col3X; + e.Graphics.DrawString($"{FormatDouble_P(result.TABLE)}%", font, brush, new PointF(X, Y)); + e.Graphics.DrawString($"{DtResults.Where(X => "TABLE".Equals(X.TestItemId)).Select(X => X.CutLevel).FirstOrDefault()}", font, brush, new PointF(480, Y)); + // 第五行 + X = startX; + Y += font.Height; + e.Graphics.DrawString("Crown", font, brush, new PointF(X, Y)); + X = col2X; + e.Graphics.DrawString($"{FormatDouble_A(result.CROWN_ANGLE)}°", font, brush, new PointF(X, Y)); + X = col3X; + e.Graphics.DrawString($"({FormatDouble_A(result.CROWN_ANGLE_MIN)}°-{FormatDouble_A(result.CROWN_ANGLE_MAX)}°)", font, brush, new PointF(X, Y)); + X += 120; + e.Graphics.DrawString($"({FormatDouble_A(result.CROWN_HEIGHT)}%)", font, brush, new PointF(X, Y)); + e.Graphics.DrawString($"{DtResults.Where(X => "CROWN_ANGLE".Equals(X.TestItemId)).Select(X => X.CutLevel).FirstOrDefault()}", font, brush, new PointF(410, Y)); + e.Graphics.DrawString($"{DtResults.Where(X => "CROWN_HEIGHT".Equals(X.TestItemId)).Select(X => X.CutLevel).FirstOrDefault()}", font, brush, new PointF(480, Y)); + // 第六行 + X = startX; + Y += font.Height; + e.Graphics.DrawString("Pavil.", font, brush, new PointF(X, Y)); + X = col2X; + e.Graphics.DrawString($"{FormatDouble_A(result.PAV_ANGLE)}°", font, brush, new PointF(X, Y)); + X = col3X; + e.Graphics.DrawString($"({FormatDouble_A(result.PAV_ANGLE_MIN)}°-{FormatDouble_A(result.PAV_ANGLE_MAX)}°)", font, brush, new PointF(X, Y)); + X += 120; + e.Graphics.DrawString($"({FormatDouble_A(result.PAV_DEPTH)}%)", font, brush, new PointF(X, Y)); + e.Graphics.DrawString($"{DtResults.Where(X => "PAV_ANGLE".Equals(X.TestItemId)).Select(X => X.CutLevel).FirstOrDefault()}", font, brush, new PointF(410, Y)); + e.Graphics.DrawString($"{DtResults.Where(X => "PAV_DEPTH".Equals(X.TestItemId)).Select(X => X.CutLevel).FirstOrDefault()}", font, brush, new PointF(480, Y)); + // 第七行 + X = startX; + Y += font.Height; + e.Graphics.DrawString("Culet", font, brush, new PointF(X, Y)); + X = col2X; + e.Graphics.DrawString($"{FormatDouble_P(result.CULET)}%", font, brush, new PointF(X, Y)); + X = col3X; + e.Graphics.DrawString($"Twist", font, brush, new PointF(X, Y)); + X += 60; + e.Graphics.DrawString($"({FormatDouble_A(result.TWIST_MIN)}°-{FormatDouble_A(result.TWIST_MAX)}°)", font, brush, new PointF(X, Y)); + // 第八行 + X = startX; + Y += font.Height; + e.Graphics.DrawString("Girdle 16M", font, brush, new PointF(X, Y)); + X = col2X; + e.Graphics.DrawString($"{FormatDouble_D(result.GIRDLE_VALLEY)}", font, brush, new PointF(X, Y)); + X = col3X; + e.Graphics.DrawString($"({FormatDouble_P(result.GIRDLE_VALLEY_MIN)}%-{FormatDouble_P(result.GIRDLE_VALLEY_MAX)}%)", font, brush, new PointF(X, Y)); + e.Graphics.DrawString($"{DtResults.Where(X => "GIRDLE".Equals(X.TestItemId)).Select(X => X.CutLevel).FirstOrDefault()}", font, brush, new PointF(480, Y)); + + } #region 钻石操作相关 //暂略 //部分代码(直接操作控件)需要在xaml.cs里边写 diff --git a/Views/Dialog/ExportDialog.xaml.cs b/Views/Dialog/ExportDialog.xaml.cs index d129168..89d74ad 100644 --- a/Views/Dialog/ExportDialog.xaml.cs +++ b/Views/Dialog/ExportDialog.xaml.cs @@ -1,4 +1,5 @@ -using System; +using log4net; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -19,6 +20,7 @@ namespace SparkClient.Views.Dialog /// public partial class ExportDialog : Window { + private static readonly ILog Logger = LogManager.GetLogger(typeof(ExportDialog)); public ExportDialog() { InitializeComponent(); diff --git a/Views/Dialog/JsonImport.xaml.cs b/Views/Dialog/JsonImport.xaml.cs index 26964b1..f0cf9b5 100644 --- a/Views/Dialog/JsonImport.xaml.cs +++ b/Views/Dialog/JsonImport.xaml.cs @@ -1,6 +1,8 @@ using HandyControl.Controls; +using log4net; using SparkClient.ViewModel; using SparkClient.ViewModel.Dialog; +using SparkClient.Views.Grading; using System.IO; using System.Windows; using System.Windows.Controls; @@ -14,6 +16,7 @@ namespace SparkClient.Views.Dialog /// public partial class JsonImport { + private static readonly ILog Logger = LogManager.GetLogger(typeof(JsonImport)); public BaseViewModel ViewModel = null; public JsonImport() { diff --git a/Views/Dialog/MessageBox.xaml.cs b/Views/Dialog/MessageBox.xaml.cs index 6ad6bf1..3a1ac76 100644 --- a/Views/Dialog/MessageBox.xaml.cs +++ b/Views/Dialog/MessageBox.xaml.cs @@ -3,12 +3,15 @@ using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; +using log4net; using SparkClient.Model.Helper; +using SparkClient.Views.Grading; namespace SparkClient.Views.Dialog; public partial class MessageBox : Window { + private static readonly ILog Logger = LogManager.GetLogger(typeof(GradingResult)); public MessageBox() { InitializeComponent(); diff --git a/Views/Grading/GradingResult.xaml.cs b/Views/Grading/GradingResult.xaml.cs index 9038466..b8ce535 100644 --- a/Views/Grading/GradingResult.xaml.cs +++ b/Views/Grading/GradingResult.xaml.cs @@ -4,6 +4,7 @@ using System.Windows.Controls.Primitives; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; +using log4net; using SparkClient.ViewModel.Grading; using GeometryModel3D = HelixToolkit.Wpf.SharpDX.GeometryModel3D; @@ -11,6 +12,8 @@ namespace SparkClient.Views.Grading; public partial class GradingResult { + private static readonly ILog Logger = LogManager.GetLogger(typeof(GradingResult)); + // List triangles = new List(); List mouseAddModels = new List(); // 用于记录当前所有已存在的Popup