首页 > 其他 > 详细

排除不必要的绘制区域,降低绘制量

时间:2014-08-26 17:16:36      阅读:259      评论:0      收藏:0      [点我收藏+]

 

 

procedure DrawBorder(Handle: THandle; ADC: HDC);
var
  R: TRect;
  Canvas: TCanvas;
  P: TPoint;
begin
  Canvas := TCanvas.Create;
  Canvas.Handle := ADC;

  P := Point(0, 0);
  Windows.ClientToScreen(Handle, P);
  Windows.GetWindowRect(Handle, R);
  P.X := P.X - R.Left;
  P.Y := P.Y - R.Top;

  Windows.GetClientRect(Handle, R);

  ///  排除不需要绘制的区域
  ///    优点: 1、不会绘出界外
  ///           2、当面积比较大如背景,拖拽缩放时不会出现大面积色块问题
  ///
  ExcludeClipRect(Canvas.Handle, P.X, P.Y, R.Right - R.Left + P.X, R.Bottom - R.Top + P.Y);

  Windows.GetWindowRect(Handle, R);
  OffsetRect(R, -R.Left, -R.Top);

  /// 绘制背景
  ///PaintBackground(Canvas, R);

  /// 清除剪切区域
  SelectClipRgn(Canvas.Handle, 0);

  Canvas.Handle := 0;
  Canvas.Free;
end;

 

排除不必要的绘制区域,降低绘制量

原文:http://www.cnblogs.com/gleam/p/3937510.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!