////////////////////////////////////////////////////////////////////////// //Name:StoreRect //依照选取的两个点绘制矩形,将矩形的每一个点存储到容器里面 //在容器的前4个单元里面储存矩形的4个直角坐标。 //////////////////////////////////////////////////////////////////////////void CObject::StoreRect(const POINT &pt1,const POINT &pt2) { if (pt1.x==pt2.x||pt1.y==pt2.y) return; if (!P->empty()) { P->clear(); } SetColor(WHITE); SetName(RECTTANELE); int vx=pt2.x-pt1.x; int vy=pt2.y-pt1.y; int sx=pt1.x; int sy=pt1.y;
if (vx<0) { vx=-vx; sx=pt2.x; } if (vy<0) { vy=-vy; sy=pt2.y; } //首先储存矩形的4个点 POINT ptT; P->push_back(pt1); P->push_back(pt2); ptT.x=pt1.x; ptT.y=pt2.y; P->push_back(ptT); ptT.x=pt2.x; ptT.y=pt1.y; P->push_back(ptT);
想要旋转,自己扩展一个类
//Name:StoreRect
//依照选取的两个点绘制矩形,将矩形的每一个点存储到容器里面
//在容器的前4个单元里面储存矩形的4个直角坐标。
//////////////////////////////////////////////////////////////////////////void CObject::StoreRect(const POINT &pt1,const POINT &pt2)
{
if (pt1.x==pt2.x||pt1.y==pt2.y)
return;
if (!P->empty())
{
P->clear();
}
SetColor(WHITE);
SetName(RECTTANELE);
int vx=pt2.x-pt1.x;
int vy=pt2.y-pt1.y;
int sx=pt1.x;
int sy=pt1.y;
if (vx<0)
{
vx=-vx;
sx=pt2.x;
}
if (vy<0)
{
vy=-vy;
sy=pt2.y;
}
//首先储存矩形的4个点
POINT ptT;
P->push_back(pt1);
P->push_back(pt2);
ptT.x=pt1.x;
ptT.y=pt2.y;
P->push_back(ptT);
ptT.x=pt2.x;
ptT.y=pt1.y;
P->push_back(ptT);
//然后再储存矩形的4条边
int x,y;
ptT.y=sy;//top
for( x=1;x<vx;x++)
{
ptT.x=sx+x;
P->push_back(ptT);
}
ptT.y=sy+vy;//bottom
for( x=1;x<vx;x++)
{
ptT.x=sx+x;
P->push_back(ptT);
}
ptT.x=sx;//left
for ( y=1;y<vy;y++)
{
ptT.y=sy+y;
P->push_back(ptT);
}
ptT.x=sx+vx;//right
for ( y=1;y<vy;y++)
{
ptT.y=sy+y;
P->push_back(ptT);
}
}