模擬數位電壓表、計時器、儀表板等硬體八段管顯示,適用於 AD 採集資料視覺化、單片機上位機監控介面。
class CNumPane : public CStatic {
public:
CNumPane(BOOL bIsShow = FALSE);
void Restore(); // 重置初始值
BOOL bIsShowBackGround; // 是否顯示背景數字 (灰色底版)
void SetBackNumColor(COLORREF); // 背景數字顏色
void SetNumColor(COLORREF); // 前景數字顏色
void SetBorderColor(COLORREF); // 控件邊框顏色
void SetBackGroundColor(COLORREF); // 控件背景顏色
void SetShowNumber(CString str); // 設定顯示數字 (支援浮點數字串)
void SetShowNumber(float f);
};
struct Pane8 {
CPoint m_leftup, m_rightup, m_leftmid, m_rightmid, m_leftbottom, m_rightbottom; // 6 關鍵點
CDC* pDC;
void DrawA(); ... void DrawG(); // 7 段繪製 (LineTo)
void Draw0(); ... void Draw9(); // 0-9 數字組合
void DrawMinus(); void DrawDot(); // '-' 與 '.'
};
依控件大小、字符數、段寬/間距比例,計算每個八段管 6 個關鍵點座標,構建 Pane8 陣列 pItem[]。繪製時遍歷字串,呼叫對應 DrawX() 方法組合段落。

MoveTo/LineTo 繪製,無立體/發光效果 → 改用 GDI+ GraphicsPath + 漸變筆刷SetShowNumber 解析邏輯OnPaint 中引入 CMemDCVisual C++ 6.0 / Windows XP / Windows 98 測試通過。原始碼附件含完整 Demo 專案。