[控件]在捕获视频时画面中叠加自绘内容

RVCamViewer 是 RVMedia 输出视频的对象,它提供了一个 OnPaint 事件,我们可以在其中控制要呈现给用户的内容。

下面的例子,我就在画面的右上角呈现了已经录制的时间,其中用到的 RollupTime 函数,请到 QString.pas 里找。

	procedure TfrmVideoRecord.RVCamView1Paint(Sender: TObject; VideoFrame: TBitmap;
ACanvas: TCanvas; var CanDrawFrame: Boolean);
var
  S: String;
  ARecordedTime: Cardinal;
  R: TRect;
begin
  R := RVCamView1.FrameRect;
  ACanvas.StretchDraw(R, VideoFrame);
  CanDrawFrame := False;
  if FUsedTime <> 0 then
  begin
    ARecordedTime := GetTickCount - FUsedTime;
    if ARecordedTime >= 1000 then
    begin
      S := '已录制时长:' + RollupTime(ARecordedTime div 1000);
      ACanvas.Brush.Style := bsClear;
      ACanvas.TextRect(R, S, [tfRight]);
    end;
  end;
end;

本文转载于波哥的QDAC

分享到: