RECT类

RECT类

  rect对象用来存储一个矩形框的左上角坐标、宽度和高度。

描述矩形的宽度、高度和原点。

命名空间:    System.Windows
程序集:    System.Windows (在 System.Windows.dll 中)

句法

  class Rect

成员表

  
构造函数 描述
Rect::Rect() 创建一个矩形对象,矩形左上角的横坐标、纵坐标以及矩形的宽度、高度均为零。这是默认的构造函数
Rect::Rect(point&,size&) 创建一个矩形对象,用Point对象来初始化矩形左上角的横坐标和纵坐标,用size对象来初始化矩形的高度和宽度
Rect::Rect(INT,INT,INT,INT) 创建一个矩形对象,通过使用四个整数来初始化矩形左上角的横坐标、纵坐标以及矩形的高度、宽度
类成员函数 描述
Rect::Clone 该函数用来创建一个与当前矩形对象相同的矩形对象
Rect::contains(point&) 该函数用来决定该点是否在此矩形框内
Rect::contains(rect&) 该函数用来决定另一个矩形框是否在这个矩形框内
Rect::contains(INT,INT) 该函数用来决定点(x,y)是否在此矩形框内
Rect::equals 该函数用来判定量矩形对象是否相等
Rect::getbottom 该函数用来获取矩形框底部边缘的y值
Rect::getbounds 该函数用来为这个矩形框创建一个副本
Rect::getleft 该函数用来获取矩形框左边缘的x值
Rect::getlocation 该函数用来获取矩形框左上角的坐标
Rect::getright 该函数用来获取矩形框右边缘的x值
Rect::getsize 该函数用来获取矩形框的宽度和高度
Rect::gettop 该函数用来获取矩形框左边缘的y值
Rect::inflate(INT,INT) 该函数通过dx在左右边框上扩大该矩形框,通过dy在上下边框上扩大该矩形框
Rect::inflate(point&) 该函数通过point.x的值在左右边框上来扩大该矩形框,通过point.y的值在上下边框上来扩大该矩形框
Rect::intsect(rects&;rects&;rects&) 该函数用来确定两个矩形框的交集,并将这一结果储存在一个rect对象中
Rect::intsect(rects&) 该函数用来将此矩形框与另一矩形框的交集来替换这一矩形框
Rect::intersectwith 该函数用来判断该矩形框是否与另一个矩形框相交
Rect::isemptyarea 该函数用来该矩形框是否为空
Rect::offset(INT,INT) 该函数用来移动此矩形框,通过水平的移动dx距离,以及垂直移动dy距离
Rect::offset(point&) 该函数用来水平地移动该矩形框point.x距离,以及垂直地移动该矩形框point.y距离
Rect::union 该函数用来决定两个矩形的合并,并将结果保存在一个rect对象中

编辑本段RECT

  rect结构定义了一个矩形框左上角以及右下角的坐标
  typedef struct _RECT {
  LONG left;
  LONG top;
  LONG right;
  LONG bottom;
  } RECT, *PRECT;

成员

  left : 指定矩形框左上角的x坐标
  top: 指定矩形框左上角的y坐标
  right: 指定矩形框右下角的x坐标
  bottom:指定矩形框右下角的y坐标
  备注:
  当rect传递给fillrect函数时,该矩形框将被填充满,但不包括右栏和底行的像素。
  该结构与rectl结构是同一结构。

编辑本段RECT的特点与操作命令

RECT的特点

  ----RECT既是个特别的 数据结构 ,又是个函数,他的作用就是定义一个矩形区域对象,而作为函数使用时他能用两个属性(Tpiont型)指明区域范围,同时也可分解成四个单一的变量类型(Integer型),即:
  topleft:左上角坐标(Tpiont型变量);
  bottomright:右下角坐标(Tpiont型变量);
  topleft.x或left:左上角横坐标;
  topleft.y或top:左上角纵坐标;
  bottomright.x或right:右下角横坐标;
  bottomright.y或bottom:右下角纵坐标。
  ----例如,下面三种方法定义一个相同的RECT变量:
  Rect(10,10,110,210);
  topleft:=Piont(10,10);
  bottomright:=Point(110,210);
  left:=10;top:=10;right:=110;Bottom:=210;
  ----下面的代码在Form1 窗体 上定义一个RECT矩形并用红色填充:
  var
  NewRect: TRect;
  begin
  NewRect := Rect(20, 30, 50, 90);
  Form1.Canvas.Brush.Color := clRed;
  Form1.Canvas.FillRect(NewRect);
  end;
  ----从上面能看出,RECT只是个通用变量,他并不属于所有控件本身,定义之后可由所有具有CANVAS属性的控件使用,以指明某控件表面的一个矩形区域,并且程式运行过程中可随意修改尺寸和位置。

RECT操作命令

  Rect(x1,y1,x2,y2):定义Rect区域范围。
  FillRect(rect:Trect):用填充色填充Rect区域。
  FloodFill:用填充色填充Rect之外区域。
  textrect(Rect:TRect;X,Y:Integer;constText:string):在Rect对象中显示文本,其中的X、Y为显示文本的坐标值,是相对于画布的坐标而不是相对于RECT的坐标;const为显示的字符个数;string为待显示的字符串,只有在RECT内的字符才能显示出来,超出部分不显示。
  stretchdraw(constRect:TRect;Graphic:TGraphic):把图像文件填充到Rect之中,并且图像按RECT的尺寸自动伸缩,其中的Graphic可为BMP或ICO等图像资源。
  font.size:定义画布上显示文字的尺寸。
  font.color:定义画布上显示文字的颜色。
  textwidth:返回字符串的长度。
  textheight:返回字符串的高度。
  Brush.Color:定义画布的填充颜色。
  Copyrect(Dest:TRect;Canvas:Tcanvas;Source:TRect):把图像从一个矩形中拷到另一个矩形之中,并且按目标矩形尺寸自动伸缩,其中,Dest为目标画布矩形,Canvas为源画布,Source为源矩形。
  ----由于上述命令均是基于画布本身使用的,所以具体使用时必须加上控件及画面属性,例如下面的代码:
  var
  TheRect: TRect;
  begin
  TheRect.Top := 10;
  TheRect.Left := 10;
  TheRect.Bottom := 100;
  TheRect.Right := 100;
  Form1.Canvas.TextRect(TheRect,0,0,’’Hello,
  world!’’);
  end;
#include <iostream> #include <string> using namespace std; struct CPoint { int x ; int y ; }; class CRectangle { private: const int id;//常量数据成员 static int total;//静态数据成员 const static string sclass; const static int f=1.0f; CPoint lefttop ; CPoint rightdown ; public: CRectangle( ); CRectangle( CPoint& lt, CPoint& rd ); CPoint GetLefttop() const { return lefttop; } CPoint GetRightdown() const { return rightdown; } void SetLefttop(CPoint & pt) { lefttop=pt; } void SetRightdown(CPoint & pt) { rightdown=pt; } int Getid() const { return id; } static int Gettotal() { return total; } int Area( ) const; int Perimeter( ) const; }; int CRectangle::total=0;//静态数据成员必须在的外部定义(正好一次)。 const string CRectangle::sclass="CRectangle"; CRectangle::CRectangle( ):id(++total) { lefttop.x=0; lefttop.y=0; rightdown.x=1; rightdown.y=1; } CRectangle::CRectangle( CPoint& lt, CPoint& rd ):id(++total) { lefttop = lt ; rightdown = rd ; } int CRectangle::Area( ) const { int wd= rightdown.x - lefttop.x ; int ht= rightdown.y - lefttop.y ; return wd * ht ; } int CRectangle::Perimeter( ) const { int wd= rightdown.x - lefttop.x ; int ht= rightdown.y - lefttop.y ; return 2 * ( wd + ht ) ; } int main() { CPoint lt, rd; cin >> lt.x >> lt.y; cin >> rd.x >> rd.y; CRectangle crt(lt,rd);//调用有参构造函数 CRectangle crt2;//调用默认构造函数 //创建常量对象 const CRectangle crt3(lt,rd); cout<<"当前创建的矩形个数为:"; cout<<CRectangle::Gettotal()<<endl; //返回矩形的左上和右下点 CPoint lt1=crt.GetLefttop(); CPoint lt2=crt.GetRightdown(); //显示矩形的坐标 cout<<crt.Getid()<<"号矩形的坐标是:"<<"("<<lt1.x<<","<<lt1.y<<"), "; cout<<"("<<lt2.x<<","<<lt2.y<<")"<<endl; //显示矩形的面积和周长 cout << "Area:"<<crt.Area( )<<endl; cout <<"Perimeter:"<<crt.Perimeter( )<<endl; //修改矩形的左上角点 cout<<"请输入矩形新的左上点坐标:"; cin>> lt.x>>lt.y; crt.SetLefttop(lt); lt1=crt.GetLefttop(); //显示修改后矩形的坐标 cout<<"矩形的坐标是:"<<"("<<lt1.x<<","<<lt1.y<<"), "; cout<<"("<<lt2.x<<","<<lt2.y<<")"<<endl; //显示修改后矩形的面积和周长 cout << "Area:"<<crt.Area( )<<endl; cout <<"Perimeter:"<<crt.Perimeter( )<<endl; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值