diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.Designer.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.Designer.cs index 8837758..a95b8be 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.Designer.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.Designer.cs @@ -76,14 +76,14 @@ namespace JoyD.Windows.CS.Toprie this.thermalModeToolStripMenuItem.Name = "thermalModeToolStripMenuItem"; this.thermalModeToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.thermalModeToolStripMenuItem.Text = "红外模式"; - this.thermalModeToolStripMenuItem.Click += new System.EventHandler(this.thermalModeToolStripMenuItem_Click); + this.thermalModeToolStripMenuItem.Click += new System.EventHandler(this.ThermalModeToolStripMenuItem_Click); // // visibleModeToolStripMenuItem // this.visibleModeToolStripMenuItem.Name = "visibleModeToolStripMenuItem"; this.visibleModeToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.visibleModeToolStripMenuItem.Text = "自然模式"; - this.visibleModeToolStripMenuItem.Click += new System.EventHandler(this.visibleModeToolStripMenuItem_Click); + this.visibleModeToolStripMenuItem.Click += new System.EventHandler(this.VisibleModeToolStripMenuItem_Click); // // colorModeToolStripMenuItem // @@ -107,7 +107,7 @@ namespace JoyD.Windows.CS.Toprie this.pauseImageUpdateToolStripMenuItem.Name = "pauseImageUpdateToolStripMenuItem"; this.pauseImageUpdateToolStripMenuItem.Size = new System.Drawing.Size(160, 22); this.pauseImageUpdateToolStripMenuItem.Text = "暂停图像更新"; - this.pauseImageUpdateToolStripMenuItem.Click += new System.EventHandler(this.pauseImageUpdateToolStripMenuItem_Click); + this.pauseImageUpdateToolStripMenuItem.Click += new System.EventHandler(this.PauseImageUpdateToolStripMenuItem_Click); this.colorModeToolStripMenuItem.Name = "colorModeToolStripMenuItem"; this.colorModeToolStripMenuItem.Size = new System.Drawing.Size(160, 22); this.colorModeToolStripMenuItem.Text = "色彩模式"; @@ -117,56 +117,56 @@ namespace JoyD.Windows.CS.Toprie this.rainbowToolStripMenuItem.Name = "rainbowToolStripMenuItem"; this.rainbowToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.rainbowToolStripMenuItem.Text = "彩虹"; - this.rainbowToolStripMenuItem.Click += new System.EventHandler(this.rainbowToolStripMenuItem_Click); + this.rainbowToolStripMenuItem.Click += new System.EventHandler(this.RainbowToolStripMenuItem_Click); // // ironRedToolStripMenuItem // this.ironRedToolStripMenuItem.Name = "ironRedToolStripMenuItem"; this.ironRedToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.ironRedToolStripMenuItem.Text = "铁红"; - this.ironRedToolStripMenuItem.Click += new System.EventHandler(this.ironRedToolStripMenuItem_Click); + this.ironRedToolStripMenuItem.Click += new System.EventHandler(this.IronRedToolStripMenuItem_Click); // // lavaToolStripMenuItem // this.lavaToolStripMenuItem.Name = "lavaToolStripMenuItem"; this.lavaToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.lavaToolStripMenuItem.Text = "熔岩"; - this.lavaToolStripMenuItem.Click += new System.EventHandler(this.lavaToolStripMenuItem_Click); + this.lavaToolStripMenuItem.Click += new System.EventHandler(this.LavaToolStripMenuItem_Click); // // ironGrayToolStripMenuItem // this.ironGrayToolStripMenuItem.Name = "ironGrayToolStripMenuItem"; this.ironGrayToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.ironGrayToolStripMenuItem.Text = "铁灰"; - this.ironGrayToolStripMenuItem.Click += new System.EventHandler(this.ironGrayToolStripMenuItem_Click); + this.ironGrayToolStripMenuItem.Click += new System.EventHandler(this.IronGrayToolStripMenuItem_Click); // // redHotToolStripMenuItem // this.redHotToolStripMenuItem.Name = "redHotToolStripMenuItem"; this.redHotToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.redHotToolStripMenuItem.Text = "红热"; - this.redHotToolStripMenuItem.Click += new System.EventHandler(this.redHotToolStripMenuItem_Click); + this.redHotToolStripMenuItem.Click += new System.EventHandler(this.RedHotToolStripMenuItem_Click); // // rainbow2ToolStripMenuItem // this.rainbow2ToolStripMenuItem.Name = "rainbow2ToolStripMenuItem"; this.rainbow2ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.rainbow2ToolStripMenuItem.Text = "彩虹2"; - this.rainbow2ToolStripMenuItem.Click += new System.EventHandler(this.rainbow2ToolStripMenuItem_Click); + this.rainbow2ToolStripMenuItem.Click += new System.EventHandler(this.Rainbow2ToolStripMenuItem_Click); // // whiteHotToolStripMenuItem // this.whiteHotToolStripMenuItem.Name = "whiteHotToolStripMenuItem"; this.whiteHotToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.whiteHotToolStripMenuItem.Text = "白热"; - this.whiteHotToolStripMenuItem.Click += new System.EventHandler(this.whiteHotToolStripMenuItem_Click); + this.whiteHotToolStripMenuItem.Click += new System.EventHandler(this.WhiteHotToolStripMenuItem_Click); // // blackHotToolStripMenuItem // this.blackHotToolStripMenuItem.Name = "blackHotToolStripMenuItem"; this.blackHotToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.blackHotToolStripMenuItem.Text = "黑热"; - this.blackHotToolStripMenuItem.Click += new System.EventHandler(this.blackHotToolStripMenuItem_Click); + this.blackHotToolStripMenuItem.Click += new System.EventHandler(this.BlackHotToolStripMenuItem_Click); // // 已移除蓝红菜单项(不在SDK的8种标准色板中) // diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs index cfe5736..5150128 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs @@ -19,6 +19,9 @@ namespace JoyD.Windows.CS.Toprie // 是否正在接收图像 private bool _isReceivingImage = false; + // 是否暂停图像更新 + private bool _isImageUpdatePaused = false; + // 项目路径,用于数据文件的存取 private string _projectPath = ""; @@ -30,18 +33,18 @@ namespace JoyD.Windows.CS.Toprie [DefaultValue("")] public string ProjectPath { - get { return _projectPath; } + get { return _projectPath; } set { // 只有当值发生变化时才进行同步 if (_projectPath != value) - { - _projectPath = value; + { + _projectPath = value; // 如果DeviceManager已经初始化,则同步更新其ProjectPath属性 - if (_deviceManager != null) - { - _deviceManager.ProjectPath = _projectPath; - } + if (_deviceManager != null) + { + _deviceManager.ProjectPath = _projectPath; + } } } } @@ -57,6 +60,44 @@ namespace JoyD.Windows.CS.Toprie DeviceManager.IsDesignMode = DesignMode; Console.WriteLine($"相机控件设计模式状态已更新: {DesignMode}"); } + + /// + /// 暂停/恢复图像更新菜单项点击事件处理 + /// + private void PauseImageUpdateToolStripMenuItem_Click(object sender, EventArgs e) + { + if (DesignMode) return; + + try + { + // 切换暂停状态 + _isImageUpdatePaused = !_isImageUpdatePaused; + + if (_isImageUpdatePaused) + { + pauseImageUpdateToolStripMenuItem.Text = "恢复图像更新"; + pauseImageUpdateToolStripMenuItem.Checked = true; + Console.WriteLine("图像更新已暂停"); + } + else + { + pauseImageUpdateToolStripMenuItem.Text = "暂停图像更新"; + pauseImageUpdateToolStripMenuItem.Checked = false; + Console.WriteLine("图像更新已恢复"); + + // 恢复时,立即停止并重新开始图像接收,确保获取最新图像 + if (_isReceivingImage && _deviceManager != null) + { + _deviceManager.StopImageReceiving(); + _deviceManager.StartImageReceiving(); + } + } + } + catch (Exception ex) + { + Console.WriteLine($"处理暂停/恢复图像更新时出错: {ex.Message}"); + } + } public Camera() { @@ -287,6 +328,9 @@ namespace JoyD.Windows.CS.Toprie /// private void DeviceManager_ImageReceived(object sender, ImageReceivedEventArgs e) { + // 如果图像更新已暂停,则不更新UI + if (_isImageUpdatePaused) + return; if (DesignMode) return; Image image = null; try @@ -1018,6 +1062,17 @@ namespace JoyD.Windows.CS.Toprie /// private void ContextMenuStrip1_Opening(object sender, System.ComponentModel.CancelEventArgs e) { + // 更新暂停菜单项的文本和状态 + if (_isImageUpdatePaused) + { + pauseImageUpdateToolStripMenuItem.Text = "恢复图像更新"; + pauseImageUpdateToolStripMenuItem.Checked = true; + } + else + { + pauseImageUpdateToolStripMenuItem.Text = "暂停图像更新"; + pauseImageUpdateToolStripMenuItem.Checked = false; + } if (DesignMode) return; try { @@ -1047,7 +1102,7 @@ namespace JoyD.Windows.CS.Toprie rainbow2ToolStripMenuItem.Checked = false; // 尝试获取当前色彩模式并更新对应菜单项的选中状态 - if (_deviceManager != null && _deviceManager.ConnectionStatus == ConnectionStatus.Connected) + if (!_isImageUpdatePaused && _deviceManager != null && _deviceManager.ConnectionStatus == ConnectionStatus.Connected) { try { @@ -1113,7 +1168,7 @@ namespace JoyD.Windows.CS.Toprie /// /// 白热色彩模式 /// - private void whiteHotToolStripMenuItem_Click(object sender, EventArgs e) + private void WhiteHotToolStripMenuItem_Click(object sender, EventArgs e) { try { @@ -1132,7 +1187,7 @@ namespace JoyD.Windows.CS.Toprie /// /// 黑热色彩模式 /// - private void blackHotToolStripMenuItem_Click(object sender, EventArgs e) + private void BlackHotToolStripMenuItem_Click(object sender, EventArgs e) { try { @@ -1151,7 +1206,7 @@ namespace JoyD.Windows.CS.Toprie /// /// 铁红色彩模式 /// - private void ironRedToolStripMenuItem_Click(object sender, EventArgs e) + private void IronRedToolStripMenuItem_Click(object sender, EventArgs e) { try { @@ -1170,7 +1225,7 @@ namespace JoyD.Windows.CS.Toprie /// /// 熔岩色彩模式 /// - private void lavaToolStripMenuItem_Click(object sender, EventArgs e) + private void LavaToolStripMenuItem_Click(object sender, EventArgs e) { try { @@ -1189,7 +1244,7 @@ namespace JoyD.Windows.CS.Toprie /// /// 彩虹色彩模式 /// - private void rainbowToolStripMenuItem_Click(object sender, EventArgs e) + private void RainbowToolStripMenuItem_Click(object sender, EventArgs e) { try { @@ -1208,7 +1263,7 @@ namespace JoyD.Windows.CS.Toprie /// /// 铁灰色彩模式 /// - private void ironGrayToolStripMenuItem_Click(object sender, EventArgs e) + private void IronGrayToolStripMenuItem_Click(object sender, EventArgs e) { try { @@ -1227,7 +1282,7 @@ namespace JoyD.Windows.CS.Toprie /// /// 红热色彩模式 /// - private void redHotToolStripMenuItem_Click(object sender, EventArgs e) + private void RedHotToolStripMenuItem_Click(object sender, EventArgs e) { try { @@ -1246,7 +1301,7 @@ namespace JoyD.Windows.CS.Toprie /// /// 彩虹2色彩模式 /// - private void rainbow2ToolStripMenuItem_Click(object sender, EventArgs e) + private void Rainbow2ToolStripMenuItem_Click(object sender, EventArgs e) { try { @@ -1269,7 +1324,7 @@ namespace JoyD.Windows.CS.Toprie /// /// 红外模式 /// - private void thermalModeToolStripMenuItem_Click(object sender, EventArgs e) + private void ThermalModeToolStripMenuItem_Click(object sender, EventArgs e) { try { @@ -1282,7 +1337,7 @@ namespace JoyD.Windows.CS.Toprie } } - private void visibleModeToolStripMenuItem_Click(object sender, EventArgs e) + private void VisibleModeToolStripMenuItem_Click(object sender, EventArgs e) { try {