⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 paintgrid.~pas

📁 本范例采用TPaintBox控件派生出仪表控件。 文件说明:PaintGrid.pas 网格型仪表控件源文件 Mymeter.pas 圆型仪表控件源文件 Project1是这两个控件的使用范
💻 ~PAS
字号:
unit PaintGrid;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, ExtCtrls,Graphics;

type
  TPaintGrid = class(TPaintBox)
     procedure Paint; override;
  private
    { Private declarations }
    iTime:integer;
    strTime:string;
    Values1: array[0..18] of integer;
    Values2: array[0..18] of integer;
    PValue1,PValue2:integer;
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor   Destroy;override;
    procedure PaintTime(Value1,Value2:integer); //画指针
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TPaintGrid]);
end;
constructor  TPaintGrid.Create(AOwner: TComponent);
var
  i:integer;
begin

  inherited;
  iTime := 0;
  for i:= 0 to 18 do
  begin
    Values1[i]:= 82;
    Values2[i]:= 149;
  end;
  PValue1 := 82;
  PValue2 := 149;
end;

destructor   TPaintGrid.Destroy;
begin
  inherited   Destroy;   
end;

procedure TPaintGrid.Paint();  //重载Paint事件
var
  i:integer;
begin
  inherited;
    //画时间轴
    Canvas.Pen.Color := clBlack;
    Canvas.Pen.Width:=2;
    Canvas.MoveTo(iTime*19+64,25);
    Canvas.LineTo(iTime*19+64,148);
    //画时间
    Canvas.Brush.Style:=bsclear;//不覆盖背景色
    Canvas.Font.Color := clwhite;
    Canvas.TextOut(iTime*19+40,153,strTime);
    //画第一条值
      //画时间轴前面
      Canvas.Pen.Color := clYellow;
      Canvas.MoveTo(64,Values1[0]);
      for i:=0 to iTime do
      begin
         Canvas.LineTo(i*19+64,Values1[i]);//);
      end;
      Canvas.MoveTo((iTime)*19+64,PValue1);
      for i:= iTime+1  to 18 do
      begin
        Canvas.LineTo(i*19+64,Values1[i]);//);
      end;


    //画第二条值
      Canvas.Pen.Color := clOlive;
      Canvas.MoveTo(64,Values2[0]);
      for i:=0 to iTime do
      begin
         Canvas.LineTo(i*19+64,Values2[i]);//);
      end;
      Canvas.MoveTo((iTime)*19+64,PValue2);
      for i:= iTime+1  to 18 do
      begin
        Canvas.LineTo(i*19+64,Values2[i]);//);
      end;
end;
procedure TPaintGrid.PaintTime(Value1,Value2:integer); //画指针
begin

    PValue1 := Values1[iTime];
    PValue2 := Values2[iTime];
    //值换成坐标

    Values1[iTime] := 82-Value1*2 div 9;
    Values2[iTime] := 149-Value2*2 div 9;




    strTime := FormatDateTime('HH:MM:SS',now());
    refresh;

   if (iTime<18) then
   begin
     inc(iTime);
   end
   else
   begin
    inc(iTime);
    iTime  := 0;
   end;
end;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -