📄 paintgrid.~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 + -