文件名称:
C++代码中关于文字标注冲突解决的代码
开发工具:
文件大小: 6kb
下载次数: 1
上传时间: 2009-06-03
详细说明: 在文字标记中搜索的代码 在指定的一个矩形区域内((0,0)-(SizeX,SizeY))添加标牌,每个标牌都是大小固定的矩形(sx,sy),每个标牌有个初始指定的左上方位置,如果该标牌没有与已经放置的其它标牌重叠的话,便就放置在该位置,否则在离该初始位置最近的空隙地方放置该标牌,直到没有地方放置为止(返回一个代表没有空闲位置的返回值)。 int x0,y0; //当前目标点中心坐标
int x,y; //当前标牌左上角坐标
i nt n; //目标总数
int dmax=100; //标牌与目标间容许最大间隔
int dmin=5; //标牌与目标间容许最小间隔
HRGN hComRgn; //已绘各标牌区域的并
HRGN hRgn; //当前标牌区域
HRGN hIntersectRgn;
//绘第一个目标的标牌
●获取第一个目标的x0,y0
x=x0+dmin; //将第一个标牌定在目标右方
if(x+sx>SizeX)x=x0-sx-dmin;//将第一个标牌改定在目标左方
y=y0-sy/2.;
if(y<0)y=0;
if(y+sy>SizeY)y=SizeY-sy;
●在(x,y)处输出第一个标牌
hComRgn=CreateRectRgn(x,y,x+sx,y+sy);
//绘其余各目标的标牌
for(int i=1;i<=n;i++)
{
int cross;
●获取第i个目标的x0,y0
x=x0+dmin;
if(x+sx>SizeX)x=x0-sx-dmin;
y=y0-sy/2.;
if(y<0)y=0;
if(y+sy>SizeY)y=SizeY-sy;
hRgn=CreateRectRgn(x,y,x+sx,y+sy);
hIntersectRgn=CreateRectRgn(0,0,0,0);
cross=CombineRgn(hIntersectRgn,hComRgn,hRgn,RGN_AND); //求交测试
if(cross!=NULLREGION)
{
int xmin,xmax,ymin,ymax;
int delta=2;
int d=dmin;
while(dSizeX)xmax=SizeX-sx;
if(ymin<0)ymin=0;
if(ymax+sy>SizeY)ymax=SizeY-sy;
for(x=xmin;x<=xmax;x+=delta)
{
for(y=ymin;y<=ymax;y+=delta)
{
if(x>x0-sx && xy0-sy && y
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.