添加10像素和15像素画笔大小按钮,并将CreateBrushSizeImage方法迁移到Setting.cs

This commit is contained in:
zqm
2025-11-10 11:31:38 +08:00
parent 53db7ff081
commit 7d7b85b239
3 changed files with 157 additions and 35 deletions

View File

@@ -159,21 +159,22 @@
13. 当选中区域时,鼠标可以移动区域,用于调整区域位置。 13. 当选中区域时,鼠标可以移动区域,用于调整区域位置。
14. 当选中区域时,右击鼠标,退出选中状态,转为就绪状态 14. 当选中区域时,右击鼠标,退出选中状态,转为就绪状态
15. 当就绪状态时工具栏显示绘制温差图按钮btnDrawTempDiff 15. 当就绪状态时工具栏显示绘制温差图按钮btnDrawTempDiff
16. 当绘制温差图按钮按下时,进入绘制温差图状态 16. 当绘制温差图按钮按下时,进入绘制温差图状态显示添加和删除温差图例按钮btnAddTempDiff、btnDeleteTempDiff显示温差图例列表dataGridViewTempDiff
17. 当绘制温差图状态时,右击鼠标进入就绪状态 17. 当绘制温差图状态时,右击鼠标进入就绪状态
#### 配置状态说明 #### 配置状态说明
1. 初始状态/就绪状态: 1. 初始状态/就绪状态:
- 显示btnDrawRegion和btnDrawTempDiff按钮 - 显示btnDrawRegion和btnDrawTempDiff按钮
- 隐藏btnSelectColor、btnDeleteRegion按钮、dataGridViewTempDiff - 隐藏btnSelectColor、btnDeleteRegion按钮、dataGridViewTempDiff、btnAddTempDiff、btnDeleteTempDiff、btnBrushSize1、btnBrushSize3、btnBrushSize5、btnBrushSize10、btnBrushSize15
2. 选中区域状态: 2. 选中区域状态:
- 显示btnDeleteRegion和btnSelectColor按钮 - 显示btnDeleteRegion和btnSelectColor按钮
- 隐藏btnDrawRegion和btnDrawTempDiff按钮、dataGridViewTempDiff - 隐藏btnDrawRegion和btnDrawTempDiff按钮、dataGridViewTempDiff、btnAddTempDiff、btnDeleteTempDiff、btnBrushSize1、btnBrushSize3、btnBrushSize5、btnBrushSize10、btnBrushSize15
3. 绘制状态: 3. 绘制状态:
- 显示btnSelectColor按钮 - 显示btnSelectColor按钮
- 显示btnDrawRegion按钮 - 显示btnDrawRegion按钮
- 隐藏btnDeleteRegion按钮 - 隐藏btnDeleteRegion按钮
- 隐藏btnDrawTempDiff按钮、dataGridViewTempDiff - 隐藏btnDrawTempDiff按钮、dataGridViewTempDiff、btnAddTempDiff、btnDeleteTempDiff、btnBrushSize1、btnBrushSize3、btnBrushSize5、btnBrushSize10、btnBrushSize15
4. 绘制温差图状态: 4. 绘制温差图状态:
- 显示btnDrawTempDiff按钮显示dataGridViewTempDiff - 显示btnDrawTempDiff按钮显示dataGridViewTempDiff、btnAddTempDiff、btnDeleteTempDiff
- 当选定温差图例后显示btnBrushSize1、btnBrushSize3、btnBrushSize5、btnBrushSize10、btnBrushSize15
- 隐藏btnSelectColor、btnDeleteRegion、btnDrawRegion按钮 - 隐藏btnSelectColor、btnDeleteRegion、btnDrawRegion按钮

View File

@@ -163,6 +163,30 @@ namespace JoyD.Windows.CS
this.btnBrushSize5.ToolTipText = "选择5像素画笔"; this.btnBrushSize5.ToolTipText = "选择5像素画笔";
this.btnBrushSize5.Click += new System.EventHandler(this.BtnBrushSize5_Click); this.btnBrushSize5.Click += new System.EventHandler(this.BtnBrushSize5_Click);
// //
// btnBrushSize10
//
this.btnBrushSize10 = new System.Windows.Forms.ToolStripButton();
this.btnBrushSize10.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.btnBrushSize10.Image = this.CreateBrushSizeImage(10, System.Drawing.Color.Purple);
this.btnBrushSize10.ImageTransparentColor = System.Drawing.Color.Magenta;
this.btnBrushSize10.Name = "btnBrushSize10";
this.btnBrushSize10.Size = new System.Drawing.Size(23, 22);
this.btnBrushSize10.Text = "画笔大小10px";
this.btnBrushSize10.ToolTipText = "选择10像素画笔";
this.btnBrushSize10.Click += new System.EventHandler(this.BtnBrushSize10_Click);
//
// btnBrushSize15
//
this.btnBrushSize15 = new System.Windows.Forms.ToolStripButton();
this.btnBrushSize15.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.btnBrushSize15.Image = this.CreateBrushSizeImage(15, System.Drawing.Color.Orange);
this.btnBrushSize15.ImageTransparentColor = System.Drawing.Color.Magenta;
this.btnBrushSize15.Name = "btnBrushSize15";
this.btnBrushSize15.Size = new System.Drawing.Size(23, 22);
this.btnBrushSize15.Text = "画笔大小15px";
this.btnBrushSize15.ToolTipText = "选择15像素画笔";
this.btnBrushSize15.Click += new System.EventHandler(this.BtnBrushSize15_Click);
//
// toolStrip // toolStrip
// //
this.toolStrip.AllowDrop = true; this.toolStrip.AllowDrop = true;
@@ -178,7 +202,9 @@ namespace JoyD.Windows.CS
new System.Windows.Forms.ToolStripSeparator(), new System.Windows.Forms.ToolStripSeparator(),
this.btnBrushSize1, this.btnBrushSize1,
this.btnBrushSize3, this.btnBrushSize3,
this.btnBrushSize5}); this.btnBrushSize5,
this.btnBrushSize10,
this.btnBrushSize15});
this.toolStrip.Location = new System.Drawing.Point(3, 0); this.toolStrip.Location = new System.Drawing.Point(3, 0);
this.toolStrip.Name = "toolStrip"; this.toolStrip.Name = "toolStrip";
this.toolStrip.Size = new System.Drawing.Size(104, 25); this.toolStrip.Size = new System.Drawing.Size(104, 25);
@@ -291,30 +317,8 @@ namespace JoyD.Windows.CS
private System.Windows.Forms.ToolStripButton btnBrushSize1; private System.Windows.Forms.ToolStripButton btnBrushSize1;
private System.Windows.Forms.ToolStripButton btnBrushSize3; private System.Windows.Forms.ToolStripButton btnBrushSize3;
private System.Windows.Forms.ToolStripButton btnBrushSize5; private System.Windows.Forms.ToolStripButton btnBrushSize5;
private System.Windows.Forms.ToolStripButton btnBrushSize10;
private System.Windows.Forms.ToolStripButton btnBrushSize15;
private System.Windows.Forms.DataGridView dataGridViewTempDiff; private System.Windows.Forms.DataGridView dataGridViewTempDiff;
/// <summary>
/// 创建表示画笔大小的图标
/// </summary>
/// <param name="size">画笔大小(像素)</param>
/// <param name="color">画笔颜色</param>
/// <returns>表示画笔大小的图标</returns>
private System.Drawing.Bitmap CreateBrushSizeImage(int size, System.Drawing.Color color)
{
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(20, 20);
using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp))
{
// 填充背景为透明色
g.Clear(System.Drawing.Color.Magenta);
// 计算正方形位置,使其居中
int x = (20 - size) / 2;
int y = (20 - size) / 2;
// 绘制正方形表示画笔大小
g.FillRectangle(new System.Drawing.SolidBrush(color), x, y, size, size);
// 添加边框
g.DrawRectangle(new System.Drawing.Pen(System.Drawing.Color.Black), x, y, size - 1, size - 1);
}
return bmp;
}
} }
} }

View File

@@ -49,6 +49,9 @@ namespace JoyD.Windows.CS
private bool _isMoving = false; private bool _isMoving = false;
private Point _startMovePoint; private Point _startMovePoint;
// 画笔大小相关变量
private int _currentBrushSize = 1; // 默认画笔大小为1像素
public Setting() public Setting()
{ {
InitializeComponent(); InitializeComponent();
@@ -85,6 +88,121 @@ namespace JoyD.Windows.CS
dataGridViewTempDiff.Visible = false; dataGridViewTempDiff.Visible = false;
} }
/// <summary>
/// 1像素画笔大小按钮点击事件
/// </summary>
private void BtnBrushSize1_Click(object sender, EventArgs e)
{
_currentBrushSize = 1;
// 更新按钮选中状态
UpdateBrushSizeButtonSelection(1);
}
/// <summary>
/// 3像素画笔大小按钮点击事件
/// </summary>
private void BtnBrushSize3_Click(object sender, EventArgs e)
{
_currentBrushSize = 3;
// 更新按钮选中状态
UpdateBrushSizeButtonSelection(3);
}
/// <summary>
/// 5像素画笔大小按钮点击事件
/// </summary>
private void BtnBrushSize5_Click(object sender, EventArgs e)
{
_currentBrushSize = 5;
// 更新按钮选中状态
UpdateBrushSizeButtonSelection(5);
}
/// <summary>
/// 10像素画笔大小按钮点击事件
/// </summary>
private void BtnBrushSize10_Click(object sender, EventArgs e)
{
_currentBrushSize = 10;
// 更新按钮选中状态
UpdateBrushSizeButtonSelection(10);
}
/// <summary>
/// 15像素画笔大小按钮点击事件
/// </summary>
private void BtnBrushSize15_Click(object sender, EventArgs e)
{
_currentBrushSize = 15;
// 更新按钮选中状态
UpdateBrushSizeButtonSelection(15);
}
/// <summary>
/// 创建表示画笔大小的图标
/// </summary>
/// <param name="size">画笔大小(像素)</param>
/// <param name="color">画笔颜色</param>
/// <returns>表示画笔大小的图标</returns>
private System.Drawing.Bitmap CreateBrushSizeImage(int size, System.Drawing.Color color)
{
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(20, 20);
using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp))
{
// 填充背景为透明色
g.Clear(System.Drawing.Color.Magenta);
// 计算正方形位置,使其居中
int x = (20 - size) / 2;
int y = (20 - size) / 2;
// 绘制正方形表示画笔大小
g.FillRectangle(new System.Drawing.SolidBrush(color), x, y, size, size);
// 添加边框
g.DrawRectangle(new System.Drawing.Pen(System.Drawing.Color.Black), x, y, size - 1, size - 1);
}
return bmp;
}
/// <summary>
/// 更新画笔大小按钮的选中状态
/// </summary>
/// <param name="selectedSize">当前选中的画笔大小</param>
private void UpdateBrushSizeButtonSelection(int selectedSize)
{
try
{
// 清除所有按钮的选中状态
btnBrushSize1.Checked = false;
btnBrushSize3.Checked = false;
btnBrushSize5.Checked = false;
btnBrushSize10.Checked = false;
btnBrushSize15.Checked = false;
// 设置当前选中按钮的选中状态
switch (selectedSize)
{
case 1:
btnBrushSize1.Checked = true;
break;
case 3:
btnBrushSize3.Checked = true;
break;
case 5:
btnBrushSize5.Checked = true;
break;
case 10:
btnBrushSize10.Checked = true;
break;
case 15:
btnBrushSize15.Checked = true;
break;
}
}
catch (Exception ex)
{
Console.WriteLine("更新画笔大小按钮状态失败: " + ex.Message);
}
}
/// <summary> /// <summary>
/// 鼠标按下事件 - 处理右击退出绘制状态、左击开始绘制矩形和开始调整区域大小 /// 鼠标按下事件 - 处理右击退出绘制状态、左击开始绘制矩形和开始调整区域大小
/// </summary> /// </summary>
@@ -176,9 +294,8 @@ namespace JoyD.Windows.CS
// 检查是否是温差值列 // 检查是否是温差值列
if (dataGridViewTempDiff.CurrentCell.ColumnIndex == dataGridViewTempDiff.Columns["tempDiffValue"].Index) if (dataGridViewTempDiff.CurrentCell.ColumnIndex == dataGridViewTempDiff.Columns["tempDiffValue"].Index)
{ {
// 获取TextBox编辑控件 // 获取TextBox编辑控件 - 使用模式匹配
TextBox tb = e.Control as TextBox; if (e.Control is TextBox tb)
if (tb != null)
{ {
// 清除之前的处理程序 // 清除之前的处理程序
tb.KeyPress -= new KeyPressEventHandler(TempDiffValueTextBox_KeyPress); tb.KeyPress -= new KeyPressEventHandler(TempDiffValueTextBox_KeyPress);
@@ -906,8 +1023,8 @@ namespace JoyD.Windows.CS
// 设置高质量绘图 // 设置高质量绘图
g.SmoothingMode = SmoothingMode.AntiAlias; g.SmoothingMode = SmoothingMode.AntiAlias;
// 使用每个区域自己的颜色绘制矩形 // 使用每个区域自己的颜色和当前选择的画笔大小绘制矩形
g.DrawRectangle(new Pen(region.Color, 2), region.ImageRectangle); g.DrawRectangle(new Pen(region.Color, _currentBrushSize), region.ImageRectangle);
// 绘制区域序号 // 绘制区域序号
using (Font font = new Font("Arial", 12, FontStyle.Bold)) using (Font font = new Font("Arial", 12, FontStyle.Bold))