欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > C语言怎样复制图形?

C语言怎样复制图形?

2025/11/9 16:19:45 来源:https://blog.csdn.net/W_Fe5/article/details/139712480  浏览:    关键词:C语言怎样复制图形?

一、问题

        C语⾔中如何实现把屏幕某⼀处的图形复制到另⼀处?

二、解答

        复制图形要⽤到以下3个函数:

void far getimage(int xl,nt yl, int x2,int y2, void far *mapbuf); 
void far putimge(int x,int,y,void *mapbuf, int op); 
unsined far imagesize(int x1,int y1,int x2,int y2);

        这3个函数⽤于将屏幕上的图像复制到内存,然后再将内存中的图像送回到屏幕上。 ⾸先通过函数 imagesize( ) 测试要保存左上角为(x1,y1),右上⾓为(x2,y2)的图形屏幕区域内的全部内容需多少个字节,然后再给 mapbuf 分配⼀个所测数字节内存空间的指针。通过调⽤ getimage( ) 函数就可将该区域内的图像保存在内存中,需要时可⽤ putimage( ) 函数将该图像输出到左上角为点(x,y)的位置上,其中 getimage( ) 函数中的参数 op 规定如何释放内存中图像。关于这个参数的定义如下表所示。

符号常数数值含义
COPY_PUT0复制
XOR_PUT1与屏幕图像异或的复制
OR_PUT2与屏幕图像或后复制
AND_PUT3与屏幕图像与后复制
NOT_PUT4复制反像的图形

        对于 imagesize(函数,只能返回字节数⼩于 64K 字节的图像区域,否则将会出错,出错时返回-1。

        下⾯程序模拟两个⼩球动态碰撞过程

#include <stdio.h>
#include <alloc.h>
#include <graphics.h>int main()
{int i, driver = DETECT, mode, size;void *buf, initgraph(&driver, &mode, "");setbkcolor(BLUE);setcolor(LIGHTRED);setfillstyle(SOLID_FILL, LIGHTGREEN);circle(100, 200, 30);floodfill(100, 200, 12);size = imagesize(69, 169, 131, 231);buf = malloc(size);if (!buf)return -1;getimage(69, 169, 131, 231, buf);putimage(500, 269, buf, COPY_PUT);for (i = 0; i < 185; i++){putimage(70 + i, 170, buf, COPY_PUT);putimage(500 - i, 170, but, COPY_PUT);delay(10000);}for (i = 0, i < 185; i++){putimage(255 - i, 170, buf, COPY_PUT);putimage(315 + i, 170, buf, COPY_PUT);delay(1000);getch();closegraph();}
}

三、总结

        复制现有图形,有时⽐重新画要省事得多,因此复制图形功能很有⽤。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词