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