c语言中getimage()的作用及用法

Python09

c语言中getimage()的作用及用法,第1张

getimage() 保存图像函数

功能: 函数getimage()保存左上角与右下角所定义的屏幕上像素图形到指定的内存区域。

用法: 该函数调用方式为void getimage(int left,int top,int right,int bottom,void *buf)

说明: 函数中参数(left,top)为要保存的图像屏幕的左上角,(right,bottom)为其右下角,buf指向保存图像的内存地址。调用getimage()保存屏幕图像,可用imagesize()函数确定保存图像所需字节数,再用malloc()函数分配存储图像的内存(内存分配必须小于64KB),还可以用下面函数putimage()输出getimage()保存的屏幕图像。

这个函数对应的头文件为graphics.h

返回值: 无

例: 把带有两对角线的矩形拷贝到屏幕其它位置上:

#include<garphics.h>

#include<stdlib.h>

#include<conio.h>

void main()

{

int driver,mode

unsigned size

void *buf

driver=DETECT

mode=0

initgraph(&driver,&mode,"")

sector(15)

rectangle(20,20,200,200)

setcolor(RED)

line(20,20,200,200)

setcolor(GREEN)

line(20,200,200,20)

getch()

size=imagesize(20,20,200,200)

if(size!=-1){

buf=malloc(size)

if(buf){

getimage(20,20,200,200,buf)

putimage(100,100,buf,COPy_PUT)

putimage(300,50,buf,COPy_PUT)

}

}

outtext("press a key")

getch()

restorecrtmode()

这是tc 一个图形库函数的实现

void fgetimage(char *s,int x0,int y0,int x1,int y1) /*拷贝图像*/

{register int j,n[4]={256,512,128,384}

int tempregister char page_new,page_old,page_end

register long position

register char *p=MK_FP(0xa000,0000)

register FILE *fp

if((fp=fopen(s,"wb"))==NULL)return

fseek(fp,0,SEEK_SET)

temp=x1-x0+1fwrite(&temp,2,1,fp)

temp=y1-y0+1fwrite(&temp,2,1,fp)

page_old=8

selectpage(page_old)

for(j=y0j<=y1j++)

{position=640l*j+x0

page_new=position/65536

page_end=(position+x1-x0+1)/65536

if(page_new!=page_old)

{selectpage(page_new)page_old=page_new} /*处理跳行跨页*/

if(page_new!=page_end) /*处理显示行跨页*/

{fwrite(p+position%65536,n[page_new]-x0,1,fp)

selectpage(page_new+1)

fwrite(p,x1-n[page_new]+1,1,fp)

selectpage(page_new)

}

else fwrite(p+position%65536,x1-x0+1,1,fp)

}

fclose(fp)

}

基本没必要知道内部存储数据的方法 这根据具体实现有关

不过你说的这目的 得用比较高级的库了 因为vc tc的实现都是简单把这结构当作一个 “缓存”

so 只能找些开源图形库看了