zoukankan      html  css  js  c++  java
  • 排除不必要的绘制区域,降低绘制量

    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;

     相关函数

        SelectClipRgn

        GetClipBox

  • 相关阅读:
    第一个Struts1步骤
    struts框架学习过程中的问题
    struts2笔记
    搭建struts2框架
    一个系统钩子
    TMemIniFile 与TIniFile 区别
    rc4加密
    注册dll
    delphi 功能函数大全-备份用
    VC中文件路径问题
  • 原文地址:https://www.cnblogs.com/gleam/p/3937510.html
Copyright © 2011-2022 走看看