- 注册时间
- 2004-9-4
- 最后登录
- 1970-1-1
|
char Scr[1600]={0};
char Dat[1600]={0};
char Clip[1600]={0};
char X1,Y1,X2,Y2;
void Copy(char x1,char y1,char x2,char y2) //x1,y1,x2,y2为欲复制的区域坐标
{
//保存当前屏幕图像到Clip(剪贴板)并记录复制区域的坐标
GetBlock(0,0,160,80,1,Clip);
X1=x1;
Y1=y1;
X2=x2;
Y2=y2;
}
void Paste(char X,char Y) //X,Y为欲粘贴的位置坐标
{
char GX1,GX2;
//保护当前屏幕用剪贴板内容更新屏幕
GetBlock(0,0,160,80,1,Scr);
WriteBlock(0,0,160,80,1,Clip);
if (X1>X2){X1=X1+X2;X2=X1-X2;X1=X1-X2;}
if (Y1>Y2){Y1=Y1+Y2;Y2=Y1-Y2;Y1=Y1-Y2;}
if (X1%8==0) GX1=X1; else GX1=X1-X1%8;
GX2=X2-X2%8+8;
//清除两边的不要的多余的图像
if (X1%8!=0) Block(GX1,Y1,X1-1,Y2,0);
if (X2%8!=7) Block(X2+1,Y1,GX2-1,Y2,0);
//将要复制的区域保存到Dat
GetBlock(GX1,Y1,GX2-GX1,Y2-Y1+1,3,Dat);
//恢复屏幕清除目标区并且粘贴
WriteBlock(0,0,160,80,1,Scr);
Block(X,Y,X+X2-X1,Y+Y2-Y1,0);
WriteBlock(X-X1%8,Y,GX2-GX1,Y2-Y1+1,3,Dat);
}
|
|