DOS界面下通用图形编辑软件的设计(1)(2)
2015-02-07 03:05
导读:{ List-head=Etemp; List-end=Etemp; } else { List-end->next=Etemp; List-end=Etemp; Etemp->next=NULL; } Elementcount ; } 2.图形的移动、删除、复制功能 以移动为例,首先用箭头键或鼠标
{
List-head=Etemp;
List-end=Etemp;
}
else
{ List-end->next=Etemp;
List-end=Etemp;
Etemp->next=NULL;
}
Elementcount ;
}
2.图形的移动、删除、复制功能
以移动为例,首先用箭头键或鼠标框取要移动的区域,区域矩形的左上,右下坐标分别为(block-x1,block-y1),(block-x2,block-y2),然后移动标识矩形到要到达的地方,确定。这样标识矩形的终止位置与初始位置存在一个偏差,水平与垂直偏差分别为dl-x,dl-y。
接下来搜索内存图素链表,确定每个图素的外接矩形,判断外接矩形是否在初始标识矩形内,若在,则将该图素的坐标属性值改变dl-x,dl-y。清除图形区,根据新的图素链表作图。
图形的删除功能类似,只需将符合条件的图素从链表中清除,再修改Elementcount值即可。
拷贝图形则只需将符合条件的图素备份一个结点,修改结点的坐标属性值,再将该结点加入链表,相应增加Elementcount的值。
以下为移动图形的代码。
fnMove ()
{
Rect rect; /* 定义的矩形 */
int i;
selectblock (); /* 选择要移动的块 */
moveblock (); /* 移动块 */
List-temp=List-head;
for (i=0;i
{
getrect (