zoukankan      html  css  js  c++  java
  • 一个模仿任务管理器的CPU的曲线图,还是可以用的

    unit Unit1;
    
    interface
    
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs,Vcl.StdCtrls, Vcl.ExtCtrls,math;
    
    type
      TDynArray = array of integer;
      PArr = ^TDynArray;
      Tpb2 = class(TForm)
        Button1: TButton;
        pb1: TPaintBox;
        Timer1: TTimer;
    
        procedure Timer1Timer(Sender: TObject);
    
      private
        { Private declarations }
         procedure mPaint();
    
      public
        { Public declarations }
      end;
    
    var
      pb2: Tpb2;
      re: TDynArray ;
      b:integer;
    
    implementation
    
    {$R *.dfm}
    
    procedure AddArrayItem(var Arr: TDynArray; x: Integer);
    begin
    SetLength(Arr,Length(Arr)+1);
    Arr[High(Arr)] := x;
    
    end;
     procedure DeleteArrItem(p: PArr; Index: Integer);
    var
    Count: Cardinal;
    begin
    Count := Length(p^);
    if (Count = 0) or (Index < 0) or (Index >= Count) then Exit;
    Move(p^[Index+1], p^[Index], (Count-Index)* SizeOf(p^[0]));
    SetLength(p^, Count - 1);
    end;
    
    
    procedure Tpb2.mPaint();
    var
    mRect: TRect;
    i,t,a,rd: integer;
    begin
      pb1.Canvas.Brush.Color := clblack   ;
      pb1.Canvas.Brush.Style := bsSolid;
      mRect.Left := 0;
      mRect.Top := 0;
    
      mRect.Right := pb1.Width;
      mRect.Bottom := pb1.Width;
      pb1.Canvas.FillRect(mRect);
      pb1.Canvas.Rectangle(mRect);
    
      pb1.Canvas.Pen.Color := clgreen ;
      pb1.Canvas.Pen.Style := psSolid;
      for i:= 1 to 20 do
      begin
      pb1.Canvas.MoveTo( i*12,0);
      pb1.Canvas.LineTo(i*12,pb1.Height);
      end;
    
      for i:= 1 to round(pb1.Height/12) do
      begin
      pb1.Canvas.MoveTo(0, i*12);
      pb1.Canvas.LineTo(240,i*12);
      end;
    
     t:= round( randomrange(30,70));  //模拟产生曲线
     rd:=round(t/100*pb1.Height);
    
     for i:= 1 to 40 do
      begin
       pb1.Canvas.Rectangle(270,10 +(i-1)*4,290,10+(i-1)*4+2);
       pb1.Canvas.Rectangle(292,10 +(i-1)*4,312,10+(i-1)*4+2);
       if (40-i)= round( (40*t/100)) then
           pb1.Canvas.Pen.Color := cllime ;
    
      end;
    
     addArrayItem(re,rd);
    
     if b>pb1.Width then
     begin
      DeleteArrItem(@re,1);
      end ;
    
     a:=length(re);
    
     pb1.Canvas.Pen.Color := cllime ;
     for i:=0 to length(re) do
     begin
      if a<>length(re) then
      begin
      pb1.Canvas.MoveTo(240-i, pb1.Height-re[a]);
      pb1.Canvas.LineTo(240-i+1,pb1.Height-re[a+1]);
    
      end;
      a:=a-1 ;
     end;
       b:=b+1
    end;
    
    
    procedure Tpb2.Timer1Timer(Sender: TObject);
    begin
    mPaint();
    end;
    
    end.
    

      

  • 相关阅读:
    linux socat创建简单的tun隧道
    【k8s】sc-nfs-pod
    c#中equals和==
    数据结构之哈希表
    数据结构之红黑树
    数据结构之2-3查找树
    数据结构之二叉查找树
    数据结构之递归与栈
    数据结构之二分查找法(折半查找)
    数据结构之基于无序链表的集合和映射
  • 原文地址:https://www.cnblogs.com/leisure520/p/7899276.html
Copyright © 2011-2022 走看看