📄 main.pas
字号:
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, MyThread,SyncObjs;
type
TForm1 = class(TForm)
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
TrackBar1: TTrackBar;
TrackBar2: TTrackBar;
TrackBar3: TTrackBar;
ProgressBar1: TProgressBar;
ProgressBar2: TProgressBar;
ProgressBar3: TProgressBar;
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
PT: array [1..3] of TPaintThread;
end;
var
Form1: TForm1;
CriticalProcess:TCriticalSection;
CriticalPaint:TCriticalSection;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
Form1.Canvas.Lock;
if (Sender as TCheckbox).Checked then
PT[(Sender as TCheckbox).Tag].Resume
else PT[(Sender as TCheckbox).Tag].Suspend;
Form1.Canvas.UnLock;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
PT[(Sender as TTrackBar).Tag].Priority :=
TThreadPriority ((Sender as TTrackBar).Position);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CriticalProcess:=TCriticalSection.Create;
CriticalPaint:=TCriticalSection.Create;
PT [1] := TPaintThread.Create(true);
PT [2] := TPaintThread.Create(true);
PT [3] := TPaintThread.Create(true);
PT[1].InitColor(clRed);
PT[2].InitColor(clBlue);
PT[3].InitColor(clGreen);
ProgressBar1.Max:=Form1.ClientHeight;
ProgressBar2.Max:=Form1.ClientHeight;
ProgressBar3.Max:=Form1.ClientHeight;
ProgressBar1.Step:=Form1.ClientHeight div 10;
ProgressBar2.Step:=Form1.ClientHeight div 10;
ProgressBar3.Step:=Form1.ClientHeight div 10;
PT[1].ProgressBar:=ProgressBar1;
PT[2].ProgressBar:=ProgressBar2;
PT[3].ProgressBar:=ProgressBar3;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Canvas.Lock;
try
Canvas.Pen.Color := Color;
Canvas.Brush.Color := Color;
Canvas.Ellipse (x - 30, y - 30, x + 30, y + 30);
finally
Canvas.Unlock;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -