時延函數(shù)一般還是會用的,因為電腦的速度太快了,不用的話我們基本上看到的就是直接從起點到終點,但是圖像移動的控制還是自己寫,你可以寫函數(shù)控制小球勻速下落或者自由落體下落。還有一點,圖像移動說白了就是重繪,所以雙緩存是必要的,不然畫面會抖動閃爍,多線程也是必要的。
作為一家“創(chuàng)意+整合+營銷”的成都網(wǎng)站建設(shè)機構(gòu),我們在業(yè)內(nèi)良好的客戶口碑。創(chuàng)新互聯(lián)提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計、成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、創(chuàng)意表現(xiàn)、網(wǎng)頁制作、系統(tǒng)開發(fā)以及后續(xù)網(wǎng)站營銷運營等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營模式與有效的網(wǎng)絡(luò)營銷方法,創(chuàng)造更大的價值。
control()
{
p-x= rand()%60;
p-y= rand()%20;
gotoxy(p-x,p-y);
printf("%c",2);
Sleep(500);
system("cls");
gotoxy(p-x,p-y);
return control();
}
位圖平移沒有這方面的庫函數(shù),必須自己來實現(xiàn),下面是位圖平移的參考代碼:
#include "stdafx.h"
#includewindows.h
#includestdio.h
#includemath.h
int _tmain(int argc, _TCHAR* argv[])
{
int width;
int height;
RGBQUAD *pTableColor;
unsigned char *pBmpBuf1,*pBmpBuf2;
BITMAPFILEHEADER bfhead;
BITMAPINFOHEADER bihead;
//讀出源圖像的信息
FILE *fpr=fopen("E:\\picture\\dog.bmp","rb");
if(fpr==0)
return 0;
fread(bfhead,14,1,fpr);
fread(bihead,40,1,fpr);
width=bihead.biWidth;
height=bihead.biHeight;
int LineByte=(width*8/8+3)/4*4;
pTableColor=new RGBQUAD[256];
fread(pTableColor,sizeof(RGBQUAD),256,fpr);
pBmpBuf1=new unsigned char[LineByte*height];
fread(pBmpBuf1,LineByte*height,1,fpr);
fclose(fpr);
//將處理后的圖像賦值為白色
pBmpBuf2=new unsigned char[LineByte*height];
for(int i=0;iheight;i++)
for(int j=0;jwidth;j++)
{
unsigned char *p;
p=(unsigned char*)(pBmpBuf2+LineByte*i+j);
(*p)=255;
}
//左右平移功能的實現(xiàn)
int t;
printf("請輸入左平移或右平移的大小t(左移t0,右移t0):");
scanf("%d",t);
int k=abs(t);
printf("%d",k);
if(t0)
{
if(t=(-width))
{
for(int i=0;iheight;i++)
for(int j=0;j(width-k);j++)
{
unsigned char *p1,*p2;
p1=pBmpBuf1+LineByte*i+j+k;
p2=pBmpBuf2+LineByte*i+j;
(*p2)=(*p1);
}
}
}
else
{
if(t=width)
{
for(int i=0;iheight;i++)
for(int j=k;jwidth;j++)
{
unsigned char *p1,*p2;
p1=pBmpBuf1+LineByte*i+j-k;
p2=pBmpBuf2+LineByte*i+j;
(*p2)=(*p1);
}
}
}
//保存處理后的圖像
FILE *fpw=fopen("dog.bmp","wb");
fwrite(bfhead,14,1,fpw);
fwrite(bihead,40,1,fpw);
fwrite(pTableColor,sizeof(RGBQUAD),256,fpw);
fwrite(pBmpBuf2,LineByte*height,1,fpw);
fclose(fpw);
return 0;
}
第一種方法:
#includegraphics.h
#includestdio.h
void main()
{
int gd=DETECT,gm,i,j,size;
void *buffer;
initgraph(gd,gm,"");
registerbgidriver(EGAVGA_driver);
setcolor(BROWN);
circle(100,100,5);
circle(80,100,5);
setfillstyle(1,RED);
bar(72,88,107,95);
setfillstyle(1,GREEN);
bar(80,80,100,88);
size=imagesize(71,79,108,106);
buffer=malloc(size);
getimage(71,79,108,106,buffer);
cleardevice();
putimage(1,1,buffer,COPY_PUT);
do
{
for(j=0;j=450;j+=90) /*改變90,可以改變下降的大小*/
{
cleardevice();
for(i=0;i=640;i++)
putimage(i+1,j+1,buffer,COPY_PUT);
cleardevice();
}
}while(!kbhit()); /*按任意鍵退出,不過要等全部走完一遍才會退出*/
closegraph();
}
第二種方法(用背景色覆蓋):
#includestdio.h
#includegraphics.h
void main()
{
int gd=DETECT,gm,i;
registerbgidriver(EGAVGA_driver);
initgraph(gd,gm,"");
setfillstyle(1,GREEN);
bar(50,230,60,240);
while(!kbhit())
{
for(i=0;i30;i++)
{
delay(10000);
bar(50+(i+1)*10,230,60+(i+1)*10,240);
setfillstyle(1,0);
bar(50+i*10,230,60+i*10,240);
setfillstyle(1,GREEN);
}
cleardevice();
}
closegraph();
}
名稱欄目:圖像移動函數(shù)c語言 c++移動函數(shù)
轉(zhuǎn)載來于:http://muchs.cn/article40/ddcieeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、移動網(wǎng)站建設(shè)、搜索引擎優(yōu)化、網(wǎng)站設(shè)計、App設(shè)計、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)