首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 實作 LED 七段顯示器模擬:位圖陣列 + TImageList 打造數位儀表板效果

     編輯:Delphi

工業控制、儀表軟體常需模擬 LED 七段顯示器 (或 16 段) 顯示數值。Delphi 結合 TImageList 儲存 0-9 數字位圖,配合 TPaintBox 繪製,即可輕鬆打造逼真的數位顯示面板。本文完整示範位圖製作、元件配置、數字拆解顯示邏輯與測試程式。

步驟 1:製作 0-9 數字位圖 (Image Editor)

  1. 工具 → Image Editor → 新建位圖:寬 48、高 64。
  2. 背景色設紫紅色 (clFuchsia),前景色紅色 (clRed)。
  3. 繪製粗線條「8」字形,拐角以斜線切割增加真實感。
  4. 另存為 bitmap_0.bmp。
  5. 複製 9 份 → bitmap_1.bmp ~ bitmap_9.bmp,分別修改為對應數字形狀。

技巧:以紫紅色為透明色,TImageList 可自動處理透明繪製。

步驟 2:表單元件配置

  • Panel1:BevelOuter=bvRaised, BevelInner=bvLowered, BorderWidth=4 (形成凸起邊框)
  • PaintBox1 置於 Panel1 內:Width=318, Height=64 (可顯示 6 位數,每位 54px 含間距)
  • ImageList1:雙擊加入 bitmap_0.bmp ~ bitmap_9.bmp,**索引 0-9 對應數字 0-9**,設定 Transparent=True。
  • Edit1 (輸入數字) + Button1 (觸發顯示)

步驟 3:核心顯示邏輯


var
  DisNumber: Integer; // 全域/表單欄位,保存目前顯示值

procedure TForm1.DisplayLED(Number: Integer);
var
  I: Integer;
  Digits: array[0..5] of Integer; // 支援 6 位數
begin
  // 限制範圍
  if Number > 999999 then Number := 0;

  // 拆解各位數字 (個位在 Digits[0])
  for I := 0 to 5 do Digits[I] := 0;
  I := 0;
  while Number > 0 do
  begin
    Digits[I] := Number mod 10;
    Number := Number div 10;
    Inc(I);
  end;

  // 從最高位繪製到最低位 (右對齊)
  for I := 5 downto 0 do
    ImageList1.Draw(PaintBox1.Canvas, (5 - I) * 54, 0, Digits[I]);
end;

步驟 4:事件串聯


// FormCreate:初始化顯示 0
procedure TForm1.FormCreate(Sender: TObject);
begin
  DisNumber := 0;
end;

// PaintBox OnPaint:重繪時恢復顯示 (視窗遮蔽後還原)
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
  DisplayLED(DisNumber);
end;

// Button1 Click:讀取 Edit1 並顯示
procedure TForm1.Button1Click(Sender: TObject);
begin
  DisNumber := StrToIntDef(Edit1.Text, 0);
  DisplayLED(DisNumber);
end;

進階擴展

  • 負號/小數點:在 ImageList 追加索引 10 (負號)、11 (小數點),擴充 Digits 邏輯解析字串。
  • 滾動顯示:配合 TTimer 實作跑馬燈效果。
  • 多色 LED:準備紅/綠/藍三套位圖,依狀態切換 ImageList。
  • 七段碼表驅動:改用 TCanvas 依段碼 (a-g, dp) 繪製線段,無需位圖資源,支援任意字型大小。

小結

「位圖陣列 + ImageList + PaintBox 重繪」是 Delphi 模擬硬體顯示器的經典模式。關鍵在於:
1. 位圖透明色統一 (紫紅色)
2. OnPaint 重繪機制保證視窗還原正確
3. 數字拆解與索引對應邏輯清晰
此架構易於擴展為時鐘、計數器、工業監控面板等應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved