アナログVUメーターに書き込もうとしています。私は、VUメーターのビットマップを使用し、ビットマップに針を描画します。私はトラックバーを使用していますし、それがメーターをテストするためのonChangeイベントです:フォームがアクティブになったときに、私のpaintboxイメージが表示されない
procedure TForm1.TrackBar1Change(Sender: TObject);
var
angle : integer;
x,y : integer;
Peaked : boolean;
begin
Angle := 120 - Round(sTrackBar1.Position/sTrackBar1.Max * 100)+20;
Peaked := Angle < PeakVol;
if Peaked then
Buffer.Picture := VUImagePeaked.Picture
else
buffer.picture := VUImage.Picture;
buffer.Picture.Bitmap.Canvas.Pen.Color := clSilver;
buffer.Picture.Bitmap.Canvas.Pen.Width:=2;
buffer.Canvas.MoveTo(pivot.x,Pivot.y);
x := 150 + Round(Cos(DegToRad(Angle)) * NeedleLen);
y := PaintBox1.Height - Round(Sin(DegToRad(Angle)) *NeedleLen);
buffer.Canvas.LineTo(x,y);
PaintBox1.Canvas.Draw(0,0,buffer.Picture.Bitmap)
end;
が動作しているようですが、私は得ることができないと、プログラムの起動時メートルのビットマップを表示することです。私は上記のコードをForm.CreateとForm.Activateの両方のイベントハンドラにコピーすることに頼っていますが、喜びはありません。私はボタンを作成し、トラックバーのonChangeイベントハンドラをトリガするために次のコードを追加しました。これが動作し、メーターが表示されます。
procedure TForm1.Button1Click(Sender: TObject);
begin
TrackBar1.Position := 1;
end;
これをForm.Activateハンドラにコピーしても、それはしません。誰でも私が間違っていることを教えてもらえますか?私はデルファイベルリンスターター版を使用しています。ありがとう
'PaintBox1.Canvas.Draw(0,0、buffer.Picture.Bitmap)' - これは 'TPaintBox.OnPaint'イベントに移動する必要があります。 –