From 28973fbd9bda0787d04ee19c5da20e4689381299 Mon Sep 17 00:00:00 2001
From: darker <mr.darker@163.com>
Date: 星期六, 15 二月 2025 15:24:12 +0800
Subject: [PATCH] 1. CServoGraph类添加修改box颜色 2. CServoDlg添加设备状态,并修改box颜色

---
 SourceCode/Bond/Servo/ServoGraph.cpp |   19 +++++++++++++++++++
 SourceCode/Bond/Servo/ServoGraph.h   |    2 ++
 SourceCode/Bond/Servo/ServoDlg.cpp   |   32 ++++++++++++++++++++++++++++++++
 SourceCode/Bond/Servo/ServoDlg.h     |    5 +++++
 4 files changed, 58 insertions(+), 0 deletions(-)

diff --git a/SourceCode/Bond/Servo/ServoDlg.cpp b/SourceCode/Bond/Servo/ServoDlg.cpp
index f8bfb36..2278d18 100644
--- a/SourceCode/Bond/Servo/ServoDlg.cpp
+++ b/SourceCode/Bond/Servo/ServoDlg.cpp
@@ -645,6 +645,38 @@
 	Invalidate();
 }
 
+void CServoDlg::UpdateDeviceStatus(int id, DeviceStatus status)
+{
+	// 根据状态设置颜色
+	COLORREF newBackgroundColor;
+	COLORREF newFrameColor1;
+	COLORREF newFrameColor2;
+
+	switch (status) {
+	case Online:
+		newBackgroundColor = RGB(255, 0, 0);
+		newFrameColor1 = RGB(22, 22, 22);
+		newFrameColor2 = RGB(255, 127, 39);
+		break;
+	case Offline:
+		newBackgroundColor = RGB(0, 255, 0);
+		newFrameColor1 = RGB(22, 22, 22);
+		newFrameColor2 = RGB(255, 127, 39);
+		break;
+	default:
+		newBackgroundColor = RGB(255, 255, 255); // 默认白色背景
+		newFrameColor1 = RGB(0, 0, 0);           // 默认黑色框架1
+		newFrameColor2 = RGB(0, 0, 0);           // 默认黑色框架2
+		break;
+	}
+
+	m_pGraph->UpdateIndicateBox1Colors(id, newBackgroundColor, newFrameColor1, newFrameColor2);
+
+	// 刷新界面
+	Invalidate();
+	UpdateWindow();
+}
+
 void CServoDlg::OnSize(UINT nType, int cx, int cy)
 {
 	CDialogEx::OnSize(nType, cx, cy);
diff --git a/SourceCode/Bond/Servo/ServoDlg.h b/SourceCode/Bond/Servo/ServoDlg.h
index 0a760d0..b6bec04 100644
--- a/SourceCode/Bond/Servo/ServoDlg.h
+++ b/SourceCode/Bond/Servo/ServoDlg.h
@@ -8,6 +8,10 @@
 #include "LogDlg.h"
 #include "TerminalDisplayDlg.h"
 
+enum DeviceStatus {
+	Online,       // 在线
+	Offline,      // 离线
+};
 
 // CServoDlg 对话框
 class CServoDlg : public CDialogEx
@@ -26,6 +30,7 @@
 	void UpdateLogBtn();
 	void UpdateRobotPosition(float percentage);
 	void RotateRobot(float angleInDegrees);
+	void UpdateDeviceStatus(int id, DeviceStatus status);
 
 
 private:
diff --git a/SourceCode/Bond/Servo/ServoGraph.cpp b/SourceCode/Bond/Servo/ServoGraph.cpp
index 3e815c8..daf274a 100644
--- a/SourceCode/Bond/Servo/ServoGraph.cpp
+++ b/SourceCode/Bond/Servo/ServoGraph.cpp
@@ -634,6 +634,25 @@
 	}
 }
 
+void CServoGraph::UpdateIndicateBox1Colors(int id, COLORREF newBackgroundColor, COLORREF newFrameColor1, COLORREF newFrameColor2)
+{
+	INDICATEBOX* pIndicateBox = GetIndicateBox(id);
+	if (pIndicateBox != nullptr) {
+		pIndicateBox->box1BackgroundColor = newBackgroundColor;
+		pIndicateBox->box1FrameColor[0] = newFrameColor1;
+		pIndicateBox->box1FrameColor[1] = newFrameColor2;
+	}
+}
+
+void CServoGraph::UpdateIndicateBox2Colors(int id, COLORREF newBackgroundColor, COLORREF newFrameColor)
+{
+	INDICATEBOX* pIndicateBox = GetIndicateBox(id);
+	if (pIndicateBox != nullptr) {
+		pIndicateBox->box2BackgroundColor = newBackgroundColor;
+		pIndicateBox->box2FrameColor = newFrameColor;
+	}
+}
+
 void CServoGraph::DrawImage(HDC hMemDC, IMAGE& item)
 {
 	// 载入BMP
diff --git a/SourceCode/Bond/Servo/ServoGraph.h b/SourceCode/Bond/Servo/ServoGraph.h
index 0a58675..d409660 100644
--- a/SourceCode/Bond/Servo/ServoGraph.h
+++ b/SourceCode/Bond/Servo/ServoGraph.h
@@ -170,6 +170,8 @@
 	void UpdateImageCoordinates(int id, int newX, int newY);
 	void UpdateIndicateBoxCoordinates(int id, int newX, int newY);
 	void UpdateImageAngle(int id, float angle);
+	void UpdateIndicateBox1Colors(int id, COLORREF newBackgroundColor, COLORREF newFrameColor1, COLORREF newFrameColor2);
+	void UpdateIndicateBox2Colors(int id, COLORREF newBackgroundColor, COLORREF newFrameColor);
 
 private:
 	void DrawImage(HDC hMemDC, IMAGE& item);

--
Gitblit v1.9.3