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

再學GDI+[41]: 文字輸出字符數控制 - DrawString 長度參數實現打字機動畫效果

     編輯:Delphi

前言

DrawString 的第二個參數 length: Integer 控制輸出字符個數。傳入 -1 輸出全部,傳入正整數輸出前 N 個字符。本文利用此特性實現打字機逐字顯示動畫與指標移動效果。

DrawString 長度參數行為

length 值行為應用場景
-1輸出字串所有字符(至 null 終止)一般文字輸出
0不輸出任何內容隱藏文字
1~Length(str)輸出前 N 個字符打字機動畫、進度顯示
> Length(str)視同 -1,輸出全部安全上限

雙階段動畫實作

  1. 階段一:num 從 0 遞增到字串長度,逐字顯示
  2. 階段二:指標指向字串末尾,Inc(pc) 移動起始位置,實現「文字向左捲動」效果
var pc: PChar = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; num: Integer;

procedure TForm1.FormClick(Sender: TObject);
var i, n: Integer;
begin
  n := Length(pc); num := 0;
  {階段一:打字機效果}
  for i := 1 to n do begin
    num := i; Repaint; Sleep(100); Application.ProcessMessages;
  end;
  num := -1;
  {階段二:捲動效果}
  for i := 1 to Length(pc) do begin
    Inc(pc); Repaint; Sleep(100); Application.ProcessMessages;
  end;
  Dec(pc, n);  {恢復指標}
end;

procedure TForm1.FormPaint(Sender: TObject);
var g: TGPGraphics; b: TGPBrush; font: TGPFont;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  b := TGPSolidBrush.Create(aclGoldenrod);
  font := TGPFont.Create('Arial Black', 18, FontStyleRegular);
  g.DrawString(pc, num, font, MakePoint(5.0, 5), b);  {關鍵:num 控制長度}
  font.Free; b.Free; g.Free;
end;

執行效果預覽

打字機動畫效果

進階應用技巧

  • 富文本打字機:結合 StringFormat 逐字測量寬度,實現比例字體打字機
  • 語音同步:根據語音時間軸動態計算 num
  • 密碼輸入:num 控制可見字符數,其餘顯示 ★
  • 日誌尾部:固定顯示最後 N 行,num 控制起始位置

表單定義檔

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 42
  ClientWidth = 501
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  Position = poDesktopCenter
  OnClick = FormClick
  OnPaint = FormPaint
  PixelsPerInch = 96
  TextHeight = 13
end
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved