更新绘制区域功能和按钮状态

This commit is contained in:
zqm
2025-11-06 14:10:23 +08:00
parent 4d057f5c98
commit af1301ffe6
7 changed files with 423 additions and 113 deletions

View File

@@ -828,7 +828,7 @@ namespace JoyD.Windows.CS.Toprie
// 创建图像副本以避免线程安全问题
Image clonedImage = (Image)tempImage.Clone();
// 调用Setting窗口的方法更新实时温度图像
Setting.Form.RealTimeImage = clonedImage;
Setting.Form.UpdateRealTimeImage(clonedImage);
}
if (lastImage != null)

View File

@@ -27,6 +27,7 @@
2. 再将InfoImage绘制到缓冲
3. 在就绪条件下调用更新实时信息并将DisplayImage绘制到缓冲
4. 最后一次性绘制到图像框的bitmap
5. 同步更新检测配置窗口的实时图像属性
### 更新实时信息
1. 以透明色清空DisplayImage

View File

@@ -0,0 +1,11 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- 背景矩形 -->
<rect x="3" y="3" width="18" height="18" rx="1" stroke="#000000" stroke-width="2" fill="none"/>
<!-- 虚线矩形边框 -->
<rect x="5" y="5" width="14" height="14" rx="1" stroke="#000000" stroke-width="1.5" stroke-dasharray="2 1" fill="none"/>
<!-- 区域选择标记 -->
<circle cx="7" cy="7" r="1.5" fill="#000000"/>
<circle cx="17" cy="7" r="1.5" fill="#000000"/>
<circle cx="7" cy="17" r="1.5" fill="#000000"/>
<circle cx="17" cy="17" r="1.5" fill="#000000"/>
</svg>

After

Width:  |  Height:  |  Size: 607 B

View File

@@ -28,47 +28,129 @@
/// </summary>
private void InitializeComponent()
{
this.groupBoxRealTimeTemperature = new System.Windows.Forms.GroupBox();
this.pictureBoxTemperatureDisplay = new System.Windows.Forms.PictureBox();
this.groupBoxRealTimeTemperature.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxTemperatureDisplay)).BeginInit();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Setting));
this.splitContainer = new System.Windows.Forms.SplitContainer();
this.groupBoxTempDisplay = new System.Windows.Forms.GroupBox();
this.picBoxTemp = new System.Windows.Forms.PictureBox();
this.toolStripContainer = new System.Windows.Forms.ToolStripContainer();
this.toolStrip = new System.Windows.Forms.ToolStrip();
this.btnDrawRegion = new System.Windows.Forms.ToolStripButton();
((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
this.splitContainer.Panel1.SuspendLayout();
this.splitContainer.Panel2.SuspendLayout();
this.splitContainer.SuspendLayout();
this.groupBoxTempDisplay.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.picBoxTemp)).BeginInit();
this.toolStripContainer.ContentPanel.SuspendLayout();
this.toolStripContainer.SuspendLayout();
this.toolStrip.SuspendLayout();
this.SuspendLayout();
//
// groupBoxRealTimeTemperature
// splitContainer
//
this.groupBoxRealTimeTemperature.Controls.Add(this.pictureBoxTemperatureDisplay);
this.groupBoxRealTimeTemperature.Location = new System.Drawing.Point(12, 12);
this.groupBoxRealTimeTemperature.Name = "groupBoxRealTimeTemperature";
this.groupBoxRealTimeTemperature.Size = new System.Drawing.Size(353, 337);
this.groupBoxRealTimeTemperature.TabIndex = 0;
this.groupBoxRealTimeTemperature.TabStop = false;
this.groupBoxRealTimeTemperature.Text = "实时温度";
this.splitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer.Location = new System.Drawing.Point(0, 0);
this.splitContainer.Name = "splitContainer";
//
// pictureBoxTemperatureDisplay
// splitContainer.Panel1
//
this.pictureBoxTemperatureDisplay.Location = new System.Drawing.Point(6, 24);
this.pictureBoxTemperatureDisplay.Name = "pictureBoxTemperatureDisplay";
this.pictureBoxTemperatureDisplay.Size = new System.Drawing.Size(341, 307);
this.pictureBoxTemperatureDisplay.TabIndex = 0;
this.pictureBoxTemperatureDisplay.TabStop = false;
this.splitContainer.Panel1.Controls.Add(this.groupBoxTempDisplay);
//
// splitContainer.Panel2
//
this.splitContainer.Panel2.Controls.Add(this.toolStripContainer);
this.splitContainer.Size = new System.Drawing.Size(649, 450);
this.splitContainer.SplitterDistance = 471;
this.splitContainer.TabIndex = 1;
//
// groupBoxTempDisplay
//
this.groupBoxTempDisplay.Controls.Add(this.picBoxTemp);
this.groupBoxTempDisplay.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupBoxTempDisplay.Location = new System.Drawing.Point(0, 0);
this.groupBoxTempDisplay.Name = "groupBoxTempDisplay";
this.groupBoxTempDisplay.Size = new System.Drawing.Size(471, 450);
this.groupBoxTempDisplay.TabIndex = 1;
this.groupBoxTempDisplay.TabStop = false;
this.groupBoxTempDisplay.Text = "实时温度";
//
// picBoxTemp
//
this.picBoxTemp.Dock = System.Windows.Forms.DockStyle.Fill;
this.picBoxTemp.Location = new System.Drawing.Point(3, 21);
this.picBoxTemp.Name = "picBoxTemp";
this.picBoxTemp.Size = new System.Drawing.Size(465, 426);
this.picBoxTemp.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.picBoxTemp.TabIndex = 0;
this.picBoxTemp.TabStop = false;
//
// toolStripContainer
//
//
// toolStripContainer.ContentPanel
//
this.toolStripContainer.ContentPanel.Controls.Add(this.toolStrip);
this.toolStripContainer.ContentPanel.Size = new System.Drawing.Size(174, 425);
this.toolStripContainer.Dock = System.Windows.Forms.DockStyle.Fill;
this.toolStripContainer.Location = new System.Drawing.Point(0, 0);
this.toolStripContainer.Name = "toolStripContainer";
this.toolStripContainer.Size = new System.Drawing.Size(174, 450);
this.toolStripContainer.TabIndex = 0;
this.toolStripContainer.Text = "toolStripContainer";
//
// toolStrip
//
this.toolStrip.Dock = System.Windows.Forms.DockStyle.None;
this.toolStrip.ImageScalingSize = new System.Drawing.Size(20, 20);
this.toolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.btnDrawRegion});
this.toolStrip.Location = new System.Drawing.Point(0, 0);
this.toolStrip.Name = "toolStrip";
this.toolStrip.Size = new System.Drawing.Size(75, 27);
this.toolStrip.TabIndex = 1;
this.toolStrip.Text = "toolStrip";
//
// btnDrawRegion
//
this.btnDrawRegion.CheckOnClick = true;
this.btnDrawRegion.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.btnDrawRegion.ImageTransparentColor = System.Drawing.Color.Transparent;
this.btnDrawRegion.Name = "btnDrawRegion";
this.btnDrawRegion.Size = new System.Drawing.Size(24, 24);
this.btnDrawRegion.Text = "画框";
this.btnDrawRegion.ToolTipText = "绘制温度检测区域(点击开启/关闭)";
//
// Setting
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1191, 450);
this.Controls.Add(this.groupBoxRealTimeTemperature);
this.ClientSize = new System.Drawing.Size(649, 450);
this.Controls.Add(this.splitContainer);
this.Name = "Setting";
this.Text = "检测配置";
this.groupBoxRealTimeTemperature.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBoxTemperatureDisplay)).EndInit();
this.splitContainer.Panel1.ResumeLayout(false);
this.splitContainer.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit();
this.splitContainer.ResumeLayout(false);
this.groupBoxTempDisplay.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.picBoxTemp)).EndInit();
this.toolStripContainer.ContentPanel.ResumeLayout(false);
this.toolStripContainer.ContentPanel.PerformLayout();
this.toolStripContainer.ResumeLayout(false);
this.toolStripContainer.PerformLayout();
this.toolStrip.ResumeLayout(false);
this.toolStrip.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.GroupBox groupBoxRealTimeTemperature;
private System.Windows.Forms.PictureBox pictureBoxTemperatureDisplay;
private System.Windows.Forms.SplitContainer splitContainer;
private System.Windows.Forms.GroupBox groupBoxTempDisplay;
private System.Windows.Forms.PictureBox picBoxTemp;
private System.Windows.Forms.ToolStripContainer toolStripContainer;
private System.Windows.Forms.ToolStrip toolStrip;
private System.Windows.Forms.ToolStripButton btnDrawRegion;
}
}

View File

@@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
@@ -17,10 +19,22 @@ namespace JoyD.Windows.CS
// 定时器字段
private Timer _timer;
// 绘制模式标志
private bool _isDrawingMode = false;
// 矩形绘制相关变量
private Point _startPoint;
private Rectangle _currentRectangle = Rectangle.Empty;
private bool _isDrawing = false;
private List<Rectangle> _drawnRectangles = new List<Rectangle>();
public Setting()
{
InitializeComponent();
// 设置按钮图标
SetButtonIcon();
// 初始化定时器
_timer = new Timer { Interval = 1000 };
_timer.Tick += Timer_Tick;
@@ -28,6 +42,170 @@ namespace JoyD.Windows.CS
// 注册窗口事件
this.Shown += Setting_Shown;
this.FormClosing += Setting_FormClosing;
// 注册按钮点击事件
btnDrawRegion.Click += BtnDrawRegion_Click;
}
/// <summary>
/// 绘制区域按钮点击事件
/// </summary>
private void BtnDrawRegion_Click(object sender, EventArgs e)
{
_isDrawingMode = btnDrawRegion.Checked;
if (_isDrawingMode)
{
// 启用绘制模式
picBoxTemp.MouseDown += PicBoxTemp_MouseDown;
picBoxTemp.MouseMove += PicBoxTemp_MouseMove;
picBoxTemp.MouseUp += PicBoxTemp_MouseUp;
picBoxTemp.Cursor = Cursors.Cross;
btnDrawRegion.ToolTipText = "绘制模式已启用,点击图片区域绘制矩形框(点击关闭)";
}
else
{
// 禁用绘制模式
picBoxTemp.MouseDown -= PicBoxTemp_MouseDown;
picBoxTemp.MouseMove -= PicBoxTemp_MouseMove;
picBoxTemp.MouseUp -= PicBoxTemp_MouseUp;
picBoxTemp.Cursor = Cursors.Default;
_currentRectangle = Rectangle.Empty;
btnDrawRegion.ToolTipText = "绘制温度检测区域(点击开启/关闭)";
// 重绘以清除临时矩形
picBoxTemp.Invalidate();
}
}
/// <summary>
/// 鼠标按下事件 - 开始绘制矩形
/// </summary>
private void PicBoxTemp_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left && _isDrawingMode)
{
_startPoint = e.Location;
_isDrawing = true;
_currentRectangle = new Rectangle(e.X, e.Y, 0, 0);
}
}
/// <summary>
/// 鼠标移动事件 - 更新矩形大小
/// </summary>
private void PicBoxTemp_MouseMove(object sender, MouseEventArgs e)
{
if (_isDrawing && _isDrawingMode)
{
int width = e.X - _startPoint.X;
int height = e.Y - _startPoint.Y;
_currentRectangle = new Rectangle(
width > 0 ? _startPoint.X : _startPoint.X + width,
height > 0 ? _startPoint.Y : _startPoint.Y + height,
Math.Abs(width),
Math.Abs(height));
picBoxTemp.Invalidate();
}
}
/// <summary>
/// 鼠标释放事件 - 完成矩形绘制
/// </summary>
private void PicBoxTemp_MouseUp(object sender, MouseEventArgs e)
{
if (_isDrawing && _isDrawingMode && e.Button == MouseButtons.Left)
{
_isDrawing = false;
// 确保矩形有一定大小才添加
if (_currentRectangle.Width > 10 && _currentRectangle.Height > 10)
{
_drawnRectangles.Add(_currentRectangle);
// 可以在这里添加处理矩形区域的逻辑,如保存区域信息等
// 显示绘制完成的提示
ToolStripStatusLabel statusLabel = new ToolStripStatusLabel();
statusLabel.Text = string.Format("已添加检测区域: X={0}, Y={1}, 宽={2}, 高={3}",
_currentRectangle.X, _currentRectangle.Y, _currentRectangle.Width, _currentRectangle.Height);
// 如果有状态栏,可以添加到状态栏显示
}
_currentRectangle = Rectangle.Empty;
picBoxTemp.Invalidate();
}
}
/// <summary>
/// 绘制事件 - 显示矩形框
/// </summary>
private void PicBoxTemp_Paint(object sender, PaintEventArgs e)
{
// 绘制所有已完成的矩形
foreach (Rectangle rect in _drawnRectangles)
{
e.Graphics.DrawRectangle(new Pen(Color.Red, 2), rect);
}
// 绘制当前正在绘制的矩形
if (!_currentRectangle.IsEmpty)
{
using (Pen dashedPen = new Pen(Color.Blue, 2))
{
dashedPen.DashPattern = new float[] { 5, 2 };
e.Graphics.DrawRectangle(dashedPen, _currentRectangle);
}
}
}
/// <summary>
/// 设置绘制区域按钮的图标
/// </summary>
private void SetButtonIcon()
{
// 创建一个表示绘制区域的图标
Bitmap icon = new Bitmap(24, 24);
using (Graphics g = Graphics.FromImage(icon))
{
// 设置高质量绘图
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
// 清除背景为透明
g.Clear(Color.Transparent);
// 绘制外矩形
g.DrawRectangle(new Pen(Color.Black, 2), 3, 3, 18, 18);
// 绘制虚线内矩形
using (Pen dashedPen = new Pen(Color.Black, 1.5f))
{
dashedPen.DashPattern = new float[] { 2, 1 };
g.DrawRectangle(dashedPen, 5, 5, 14, 14);
}
// 绘制四个角的控制点
SolidBrush brush = new SolidBrush(Color.Black);
g.FillEllipse(brush, 6, 6, 3, 3); // 左上角
g.FillEllipse(brush, 15, 6, 3, 3); // 右上角
g.FillEllipse(brush, 6, 15, 3, 3); // 左下角
g.FillEllipse(brush, 15, 15, 3, 3); // 右下角
}
// 设置按钮图标并设置透明色
btnDrawRegion.Image = icon;
btnDrawRegion.ImageTransparentColor = Color.Transparent;
// 启用双缓冲以减少闪烁
typeof(PictureBox).InvokeMember("DoubleBuffered",
System.Reflection.BindingFlags.SetProperty |
System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.NonPublic,
null, picBoxTemp, new object[] { true });
// 注册Paint事件
picBoxTemp.Paint += PicBoxTemp_Paint;
}
/// <summary>
@@ -51,7 +229,6 @@ namespace JoyD.Windows.CS
private void Setting_FormClosing(object sender, FormClosingEventArgs e)
{
_timer.Stop();
mRealTimeImage?.Dispose();
}
/// <summary>
@@ -83,109 +260,117 @@ namespace JoyD.Windows.CS
/// <summary>
/// 更新PictureBox图像的辅助方法
/// 此方法必须在UI线程上执行
/// </summary>
private void UpdatePictureBoxImage()
{
// 安全更新图像
if (pictureBoxTemperatureDisplay != null && !pictureBoxTemperatureDisplay.IsDisposed)
}
/// <summary>
/// 更新pictureBoxTemperatureDisplay的图像
/// 此方法可以从任何线程调用
/// </summary>
/// <param name="NewImage">要显示的新图像</param>
public void UpdateRealTimeImage(Image NewImage)
{
// 空值检查
if (NewImage == null)
{
try
Console.WriteLine("传入UpdateRealTimeImage的图像为空");
return;
}
// 检查是否处于设计模式或窗口不可见
if (DesignMode || !this.Visible || this.IsDisposed || this.Disposing)
{
// 如果不满足条件,释放图像资源并返回
NewImage.Dispose();
return;
}
try
{
// 线程安全检查 - 确保在UI线程上执行
if (this.InvokeRequired)
{
// 保存旧图像引用,以便设置新图像后释放
Image oldImage = pictureBoxTemperatureDisplay.Image;
// 检查mRealTimeImage是否有效 - 只设置有效的图像
Image imageToSet = null;
try
{
// 验证图像是否有效(尝试访问图像属性,如果无效会抛出异常)
if (mRealTimeImage != null)
// 使用BeginInvoke在UI线程上更新图像
this.BeginInvoke(new Action(() =>
{
// 尝试访问Width属性来验证图像是否有效
var width = mRealTimeImage.Width;
// 如果没有抛出异常,则图像有效
imageToSet = mRealTimeImage;
}
try
{
// 确保窗口未被释放
if (!this.IsDisposed && !this.Disposing && picBoxTemp != null && !picBoxTemp.IsDisposed)
{
// 保存旧图像引用,以便在设置新图像后释放
Image oldImage = picBoxTemp.Image;
// 设置新图像
picBoxTemp.Image = NewImage;
// 释放旧图像资源
if (oldImage != null && oldImage != NewImage)
{
oldImage.Dispose();
}
}
else
{
// 如果控件已释放,确保释放图像资源
NewImage.Dispose();
}
}
catch (Exception ex)
{
Console.WriteLine($"更新设置窗口图像失败: {ex.Message}");
// 确保在异常情况下释放图像资源
try
{
NewImage.Dispose();
}
catch {}
}
}));
}
catch (Exception)
catch (ObjectDisposedException)
{
// 图像无效,不设置它
// 可以选择记录日志或创建一个默认的错误图像
// 控件已释放,忽略并释放图像资源
NewImage.Dispose();
}
// 再次检查控件是否仍然有效,防止在验证过程中控件被释放
if (pictureBoxTemperatureDisplay != null && !pictureBoxTemperatureDisplay.IsDisposed)
{
// 设置图像(如果有效)
try
{
pictureBoxTemperatureDisplay.Image = imageToSet;
}
catch (Exception ex)
{
// 捕获设置图像时可能发生的异常
System.Diagnostics.Debug.WriteLine($"设置PictureBox图像失败: {ex.Message}");
// 确保设置为null而不是无效图像
pictureBoxTemperatureDisplay.Image = null;
}
}
// 释放旧图像(如果不是当前设置的图像)
if (oldImage != null && oldImage != imageToSet)
{
try { oldImage.Dispose(); } catch { }
}
}
catch (Exception ex)
{
// 捕获所有其他异常,确保方法不会崩溃
System.Diagnostics.Debug.WriteLine($"UpdatePictureBoxImage异常: {ex.Message}");
}
}
}
private Image mRealTimeImage = null;
/// <summary>
/// 实时图像属性
/// 作为后台变量,移除线程安全检查以提高性能
/// 注意:调用方需确保在合适的线程上下文中访问
/// </summary>
public Image RealTimeImage
{
get
{
return mRealTimeImage;
}
set
{
// 防止重复设置相同的图像
if (mRealTimeImage == value)
return;
// 检查是否在有效状态下操作
if (this.IsDisposed || this.Disposing)
{
// 如果窗口已关闭或正在关闭,释放传入的图像
value?.Dispose();
return;
}
// 释放旧图像资源
if (mRealTimeImage != null && mRealTimeImage != value)
// 在UI线程上直接更新图像
if (!this.IsDisposed && !this.Disposing && picBoxTemp != null && !picBoxTemp.IsDisposed)
{
try
{
mRealTimeImage.Dispose();
}
catch (Exception ex)
{
// 记录异常但不中断流程
System.Diagnostics.Debug.WriteLine($"释放旧图像资源失败: {ex.Message}");
}
// 保存旧图像引用,以便在设置新图像后释放
Image oldImage = picBoxTemp.Image;
// 设置新图像
picBoxTemp.Image = NewImage;
// 释放旧图像资源
if (oldImage != null && oldImage != NewImage)
{
oldImage.Dispose();
}
}
// 只设置mRealTimeImage不直接更新UI
// UI更新将由定时器的Timer_Tick事件处理
mRealTimeImage = value;
else
{
// 如果控件已释放,确保释放图像资源
NewImage.Dispose();
}
}
catch (Exception ex)
{
Console.WriteLine($"处理实时图像更新时出错: {ex.Message}");
// 确保在任何异常情况下都释放图像资源
try
{
NewImage.Dispose();
}
catch {}
}
}
}

View File

@@ -117,4 +117,23 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIFSURBVDhPpZLtS1NhGMbPPxJmmlYSgqHiKzGU1EDxg4iK
YKyG2WBogqMYJQOtCEVRFBGdTBCJfRnkS4VaaWNT5sqx1BUxRXxDHYxAJLvkusEeBaPAB+5z4Jzn+t3X
/aLhnEfjo8m+dCoa+7/C3O2Hqe0zDC+8KG+cRZHZhdzaaWTVTCLDMIY0vfM04Nfh77/G/sEhwpEDbO3t
I7TxE8urEVy99fT/AL5gWDLrTB/hnF4XsW0khCu5ln8DmJliT2AXrcNBsU1gj/MH4nMeKwBrPktM28xM
cX79DFKrHHD5d9D26hvicx4pABt2lpg10zYzU0zr7+e3xXGcrkEB2O2TNec9nJFwB3alZn5jZorfeDZh
6Q3g8s06BeCoKF4MRURoH1+BY2oNCbeb0TIclIYxOhzf8frTOuo7FxCbbVIAzpni0iceEc8vhzEwGkJD
lx83ymxifejdKjRNk/8PWnyIyTQqAJek0jqHwfEVscu31baIu8+90sTE4nY025dQ2/5FIPpnXlzKuK8A
HBUzHot52djqQ6HZhfR7IwK4mKpHtvEDMqvfCiQ6zaAAXM8x94aIWTNrLLG4kVUzgaTSPlzLtyJOZxbb
1wtfyg4Q+AfA3aZlButjSfxGcUJBk4g5tuP3haQKRKXcUQDOmbvNTpPOJeFFjordZmbWTNvMTHFUcpUC
nOccAdABIDXXE1nzAAAAAElFTkSuQmCC
</value>
</data>
</root>

View File

@@ -72,6 +72,11 @@
</Compile>
<Compile Include="DeviceManager.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Setting.cs">
<SubType>Form</SubType>
</Compile>
@@ -88,6 +93,10 @@
<EmbeddedResource Include="Camera.resx">
<DependentUpon>Camera.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Setting.resx">
<DependentUpon>Setting.cs</DependentUpon>
</EmbeddedResource>
@@ -95,5 +104,8 @@
<ItemGroup>
<Content Include="Toprie.ico" />
</ItemGroup>
<ItemGroup>
<Folder Include="Resources\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>