zoukankan      html  css  js  c++  java
  • WinAPI: SetRectRgn 将区域转换成矩形区域

    本例效果图:


    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;
    
    type
      TForm1 = class(TForm)
        procedure FormClick(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    var f: Boolean;
    
    procedure TForm1.FormClick(Sender: TObject);
    const
      n = 50;
    var
      Rgn: HRGN;
      x1,y1,x2,y2: Integer;
    begin
      Repaint;
    
      x1 := n;
      y1 := n div 2;
      x2 := ClientWidth - n;
      y2 := ClientHeight - n;
    
      {建立椭圆区域}
      Rgn := CreateEllipticRgn(x1, y1, x2, y2);
    
      {转换为矩形区域 - 谈不上是转换, 是重新定制了一个矩形区域, 只是用了原来的区域句柄而已}
      if f then SetRectRgn(Rgn, 11, 11, 111, 111);
      f := not f;
    
      {绘制区域}
      Canvas.Brush.Color := clSilver;
      Canvas.Brush.Style := bsCross;
      FillRgn(Canvas.Handle, Rgn, Canvas.Brush.Handle);
    
      Canvas.Brush.Color := clRed;
      Canvas.Brush.Style := bsSolid;
      FrameRgn(Canvas.Handle, Rgn, Canvas.Brush.Handle, 2, 2);
    
      DeleteObject(Rgn);
    end;
    
    end.
    
  • 相关阅读:
    Java精选笔记_JSP技术
    Java精选笔记_JavaBean
    Java精选笔记_JSP开发模型
    Java精选笔记_XML基础
    Git_多人协作
    Git_Feature分支
    Git_Bug分支
    Git_分支管理策略
    Git_解决冲突
    Git_创建与合并分支
  • 原文地址:https://www.cnblogs.com/del/p/1208183.html
Copyright © 2011-2022 走看看