diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs
index 5ab43b0..41dc8f8 100644
--- a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs
@@ -53,6 +53,9 @@ namespace JoyD.Windows.CS.Toprie
private System.Windows.Forms.ToolStripMenuItem modifyConfigToolStripMenuItem;
private const int BUFFER_HEIGHT = 384;
+ // 预览窗口引用
+ private JoyD.Windows.CS.preview _previewForm;
+
// 最后接收的图像
private Image _lastImage = null;
@@ -1131,7 +1134,11 @@ namespace JoyD.Windows.CS.Toprie
// 将全局缓冲一次性绘制到图像框的bitmap
imageBox.Image = tempImage;
-
+ // 通知预览窗口更新图像
+ if (_previewForm != null && !_previewForm.IsDisposed)
+ {
+ _previewForm.UpdateImage(tempImage);
+ }
// 步骤5:同步更新检测配置窗口的实时图像属性
// 创建LastImage的副本并通过UpdateRealTimeImage方法传递给Setting窗口
lock (_lastImageLock)
@@ -3199,9 +3206,39 @@ namespace JoyD.Windows.CS.Toprie
///
/// imageBox双击事件处理方法
- /// 双击后弹出检测配置窗口
+ /// 双击后弹出预览窗口
///
private void ImageBox_DoubleClick(object sender, EventArgs e)
+ {
+ try
+ {
+ // 关闭已存在的预览窗口
+ if (_previewForm != null && !_previewForm.IsDisposed)
+ {
+ _previewForm.Close();
+ }
+
+ // 创建新的预览窗口实例
+ _previewForm = new JoyD.Windows.CS.preview();
+ // 设置初始图像
+ _previewForm.UpdateImage(_lastImage);
+ // 模态显示预览窗口
+ _previewForm.ShowDialog();
+ // 预览窗口关闭后清空引用
+ _previewForm = null;
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"打开预览窗口时出错: {ex.Message}");
+ MessageBox.Show($"打开预览窗口时出错: {ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ ///
+ /// "修改配置"菜单项点击事件处理方法
+ /// 点击后弹出检测配置窗口
+ ///
+ private void ModifyConfigToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
@@ -3216,15 +3253,5 @@ namespace JoyD.Windows.CS.Toprie
MessageBox.Show($"打开配置窗口时出错: {ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
-
- ///
- /// "修改配置"菜单项点击事件处理方法
- /// 点击后弹出检测配置窗口,与双击效果相同
- ///
- private void ModifyConfigToolStripMenuItem_Click(object sender, EventArgs e)
- {
- // 调用与双击相同的逻辑
- ImageBox_DoubleClick(sender, e);
- }
}
}
\ No newline at end of file
diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/preview.Designer.cs b/Windows/CS/Framework4.0/Toprie/Toprie/preview.Designer.cs
new file mode 100644
index 0000000..863de51
--- /dev/null
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/preview.Designer.cs
@@ -0,0 +1,68 @@
+namespace JoyD.Windows.CS
+{
+ partial class preview
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// 预览图像控件
+ ///
+ private System.Windows.Forms.PictureBox previewImageBox;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.previewImageBox = new System.Windows.Forms.PictureBox();
+ ((System.ComponentModel.ISupportInitialize)(this.previewImageBox)).BeginInit();
+ this.SuspendLayout();
+ //
+ // previewImageBox
+ //
+ this.previewImageBox.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.previewImageBox.Location = new System.Drawing.Point(0, 0);
+ this.previewImageBox.Name = "previewImageBox";
+ this.previewImageBox.Size = new System.Drawing.Size(973, 708);
+ this.previewImageBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.previewImageBox.TabIndex = 0;
+ this.previewImageBox.TabStop = false;
+ //
+ // preview
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(973, 708);
+ this.Controls.Add(this.previewImageBox);
+ this.MinimizeBox = false;
+ this.Name = "preview";
+ this.ShowInTaskbar = false;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "预览";
+ ((System.ComponentModel.ISupportInitialize)(this.previewImageBox)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/preview.cs b/Windows/CS/Framework4.0/Toprie/Toprie/preview.cs
new file mode 100644
index 0000000..84fc221
--- /dev/null
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/preview.cs
@@ -0,0 +1,73 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace JoyD.Windows.CS
+{
+ ///
+ /// 预览窗口类,用于显示图像或数据预览
+ ///
+ public partial class preview : Form
+ {
+ ///
+ /// 初始化预览窗口的构造函数
+ ///
+ public preview()
+ {
+ InitializeComponent();
+ }
+
+ ///
+ /// 动态更新预览图像(线程安全)
+ ///
+ /// 要显示的图像
+ public void UpdateImage(Image image)
+ {
+ if (this.InvokeRequired)
+ {
+ this.Invoke(new Action(UpdateImage), image);
+ return;
+ }
+
+ try
+ {
+ // 释放旧图像资源
+ if (previewImageBox.Image != null)
+ {
+ previewImageBox.Image.Dispose();
+ previewImageBox.Image = null;
+ }
+
+ // 克隆新图像
+ if (image != null)
+ {
+ previewImageBox.Image = (Image)image.Clone();
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"更新预览图像时出错: {ex.Message}");
+ }
+ }
+
+ ///
+ /// 窗口关闭时释放资源
+ ///
+ protected override void OnFormClosed(FormClosedEventArgs e)
+ {
+ base.OnFormClosed(e);
+
+ // 释放图像资源
+ if (previewImageBox.Image != null)
+ {
+ previewImageBox.Image.Dispose();
+ previewImageBox.Image = null;
+ }
+ }
+ }
+}
diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/preview.resx b/Windows/CS/Framework4.0/Toprie/Toprie/preview.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/preview.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file