⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 编程天地--c语言--图形与动画(二).htm

📁 大家 看看 多多关注
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0052)http://souha.60800.com/ArticleShow.asp?ArticleID=173 -->
<HTML><HEAD><TITLE>编程天地-->C语言-->图形与动画(二)</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type><LINK 
href="编程天地--C语言--图形与动画(二).files/STYLE.css" rel=stylesheet type=text/css>
<META content="MSHTML 5.00.3315.2870" name=GENERATOR></HEAD>
<BODY bgColor=#f0f0f0 topMargin=0>
<STYLE type=text/css></STYLE>

<TABLE align=center background=编程天地--C语言--图形与动画(二).files/top_line.gif border=0 
cellPadding=3 cellSpacing=1 width=760>
  <TBODY>
  <TR align=middle>
    <TD><FONT color=#cccccc>
      <SCRIPT language=JavaScript>
var day="";
var month="";
var ampm="";
var ampmhour="";
var myweekday="";
var year="";
mydate=new Date();
myweekday=mydate.getDay();
mymonth=mydate.getMonth()+1;
myday= mydate.getDate();
myyear= mydate.getYear();
year=(myyear > 200) ? myyear : 1900 + myyear;
if(myweekday == 0)
weekday=" 星期日 ";
else if(myweekday == 1)
weekday=" 星期一 ";
else if(myweekday == 2)
weekday=" 星期二 ";
else if(myweekday == 3)
weekday=" 星期三 ";
else if(myweekday == 4)
weekday=" 星期四 ";
else if(myweekday == 5)
weekday=" 星期五 ";
else if(myweekday == 6)
weekday=" 星期六 ";
document.write(year+"年"+mymonth+"月"+myday+"日 "+weekday);
</SCRIPT>
      </FONT></TD>
    <TD><A class=BigMenu href="http://souha.60800.com/index.asp">搜哈首页</A></TD>
    <TD><A class=BigMenu 
      href="http://souha.60800.com/Search.asp?BigClassName=网站开发">网站开发</A></TD>
    <TD><A class=BigMenu 
      href="http://souha.60800.com/Search.asp?BigClassName=编程天地">编程天地</A></TD>
    <TD><A class=BigMenu 
      href="http://souha.60800.com/Search.asp?BigClassName=硬件资讯">硬件资讯</A></TD>
    <TD><A class=BigMenu 
      href="http://souha.60800.com/down/default.asp">软件下载</A></TD>
    <TD><A class=BigMenu href="http://souha.60800.com/liuyian/index.asp" 
      target=_blank>搜哈留言</A></TD>
    <TD><A class=BigMenu href="http://souha.60800.com/talk/index.asp" 
      target=_blank>搜哈论坛</A></TD>
    <TD><A class=BigMenu href="http://souha.60800.com/server.asp">服务项目</A></TD>
    <TD>&nbsp;</TD>
    <TD>&nbsp;</TD></TR></TBODY></TABLE>
<TABLE align=center background=编程天地--C语言--图形与动画(二).files/bottom_line.gif 
border=0 cellPadding=0 cellSpacing=0 height=76 width=760>
  <TBODY>
  <TR>
    <TD>
      <TABLE align=center bgColor=#ffffff border=0 cellPadding=0 cellSpacing=0 
      height=72 width="99%">
        <TBODY>
        <TR>
          <TD><A href="http://souha.60800.com/index.asp"><IMG border=0 
            height=60 src="编程天地--C语言--图形与动画(二).files/main1.gif" 
width=198></A></TD>
          <TD align=middle><A href="http://souha.60800.com/" 
            target=_blank><IMG border=0 height=60 
            src="编程天地--C语言--图形与动画(二).files/logo.gif" width=468></A></TD>
          <TD align=middle width=75>
            <TABLE align=center border=0 cellPadding=1 cellSpacing=0>
              <TBODY>
              <TR align=middle vAlign=center>
                <TD><IMG height=16 
                  src="编程天地--C语言--图形与动画(二).files/homepage.gif" width=16><A 
                  href="http://souha.60800.com/ArticleShow.asp?ArticleID=173#" 
                  onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://souha.60800.com')"></A></TD>
                <TD><A class=date 
                  href="http://souha.60800.com/ArticleShow.asp?ArticleID=173#" 
                  onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://souha.60800.com')">设为首页</A></TD></TR>
              <TR align=middle vAlign=center>
                <TD><IMG height=17 src="编程天地--C语言--图形与动画(二).files/email.gif" 
                  width=16><A href="mailto:souha@60800.com"></A></TD>
                <TD><A href="mailto:souha@60800.com">联系我们</A></TD></TR>
              <TR align=middle vAlign=center>
                <TD><IMG height=16 
                  src="编程天地--C语言--图形与动画(二).files/Favorites.gif" width=16><A 
                  href="http://souha.60800.com/" 
                  onclick="window.external.addFavorite('http://souha.60800.com','搜哈网络')" 
                  title=动感网络></A></TD>
                <TD><A href="http://souha.60800.com/" 
                  onclick="window.external.addFavorite('http://souha.60800.com','搜哈网络')" 
                  title=动感网络>加入收藏</A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width=760>
  <TBODY>
  <TR>
    <TD vAlign=top>
      <TABLE align=center border=0 cellPadding=1 cellSpacing=0 class=border 
      style="WORD-BREAK: break-all" width="100%">
        <TBODY>
        <TR>
          <TD background=编程天地--C语言--图形与动画(二).files/Banbg.gif 
          style="COLOR: #333333; FILTER: dropshadow(color=#FFFFFF,offx=-1,offy=1,positive=1; FONT-SIZE: 9pt">|&nbsp;<A 
            href="http://souha.60800.com/search.asp?BigClassName=编程天地">编程天地&nbsp;</A>&gt;&gt;&nbsp;<A 
            href="http://souha.60800.com/search.asp?BigClassName=编程天地&amp;SmallClassName=C语言">C语言&nbsp;</A>&gt;&gt;&nbsp;图形与动画(二) 
          </TD>
          <TD align=right background=编程天地--C语言--图形与动画(二).files/Banbg.gif 
          style="COLOR: #333333; FILTER: dropshadow(color=#FFFFFF,offx=-1,offy=1,positive=1; FONT-SIZE: 9pt" 
          width=50>&nbsp;&nbsp;&nbsp;<IMG 
            src="编程天地--C语言--图形与动画(二).files/hot.gif" td < &nbsp;&nbsp;> </TD>
        <TR class=tdbg>
          <TD bgColor=#ffffff colSpan=3>
            <P align=center><FONT 
            size=5>图形与动画(二)</FONT><BR>作者:佚名&nbsp;&nbsp;&nbsp;&nbsp;转贴自:本站原创&nbsp;&nbsp;&nbsp;&nbsp;点击数:267&nbsp;&nbsp;&nbsp;&nbsp;文章录入:windshadow</P>
            <P>3、天空中运行的卫星<BR>&nbsp;&nbsp; 
            动画显示中最基本和常用的技术是位图像操作,它可以把屏幕上一个矩形区域的图形复制到缓冲区中,也可以从缓冲区中将位块取出重现在屏幕上。目标图像的擦除最简单的方法是采用XOR(异或方式,即将目标中的每个像素点和屏幕上相应的像素点作XOR运算,使目标变得可见,为了擦掉这一目标 
            ,只需简单地再将它与屏幕XOR一次,背景中被目标所遮盖的部分又可以还原成原来的状态。<BR>&nbsp;&nbsp; 
            我们也可以利用AND和XOR运算,对被移动的目标事先作好两个特殊的掩模(mask),我们称为AND掩模和XOR掩模,这两个掩模的图形制作方式是不同的,AND掩模要求目标轮廓内位图像各点像素值为0,而XOR掩模应按目标的实际颜色去做,并将这两个掩模保存到缓冲区中去。当一个目标在背景移动时,先将目标的AND掩模与屏幕相“与”,其结果在背景当前位置产生一个像素值为0的目标轮廓洞,然后再用目标的XOR掩模与AND掩模相异或,这两个掩模经混合后,目标以其正常的颜色出现在屏幕上。这样通过采用目标位图的双掩模混合技术,当移动目标经过背景时,就不会出现目标颜色发生变化的情况。<BR>&nbsp;&nbsp; 
            作为一个示例,程序运行后,在屏幕上出现繁星闪烁的星际空间,由经纬线组成的地球镶嵌在太空中,一颗卫星缓缓从屏幕中飞过,同时在屏幕上写出彩色大汉字“星际卫星运动轨迹”和“欢迎你使用该系统”,整个画面生动美观。<BR>/*天空中运行的卫星Qw43.C*/<BR>#include&lt;graphics.h&gt;<BR>#include&lt;alloc.h&gt;<BR>#include&lt;stdlib.h&gt;<BR>#include&lt;stdio.h&gt;<BR>#include&lt;string.h&gt; 

            <P>#define STEP 5<BR>#define DELAY 150<BR>#define SIZE 25<BR>#define 
            YELLOW 14<BR>#define RED 4</P>
            <P>void *xormask,*andmask,*covered;<BR>void draw_earth();<BR>void 
            get_mask(int,int,int,int);<BR>void putstar(void);<BR>void 
xshz();</P>
            <P>int main()<BR>{<BR>&nbsp;&nbsp; int 
            gmode=VGAHI,gdriver=VGA,midx,i,cx=1,cy;<BR>&nbsp;&nbsp; char 
            *j1,*j2,*j3,*j4;<BR>&nbsp;&nbsp; 
            initgraph(&amp;gdriver,&amp;gmode,\\tc3\\bgi);<BR>&nbsp;&nbsp; 
            cy=getmaxy()/2;<BR>&nbsp;&nbsp; 
            covered=malloc(imagesize(cx,cy,cx+SIZE,cy+SIZE));<BR>&nbsp;&nbsp; 
            xormask=malloc(imagesize(cx,cy,cx+SIZE,cy+SIZE));<BR>&nbsp;&nbsp; 
            andmask=malloc(imagesize(cx,cy,cx+SIZE,cy+SIZE));<BR>&nbsp;&nbsp; 
            getimage(cx,cy,cx+SIZE,cy+SIZE,covered);<BR>&nbsp;&nbsp; 
            setfillstyle(SOLID_FILL,getmaxcolor());<BR>&nbsp;&nbsp; 
            bar(cx,cy,cx+SIZE,cy+SIZE);<BR>&nbsp;&nbsp; 
            get_mask(cx,cy+15,0,0);<BR>&nbsp;&nbsp; 
            getimage(cx,cy,cx+SIZE,cy+SIZE,andmask);</P>
            <P>&nbsp;&nbsp; putimage(cx,cy,covered,COPY_PUT);<BR>&nbsp;&nbsp; 
            get_mask(cx,cy+15,YELLOW,RED);<BR>&nbsp;&nbsp; 
            getimage(cx,cy,cx+SIZE,cy+SIZE,xormask);<BR>&nbsp;&nbsp; 
            putimage(cx,cy,xormask,XOR_PUT);<BR>&nbsp;&nbsp; 
            draw_earth();<BR>&nbsp;&nbsp; putstar();<BR>&nbsp;&nbsp; 
            j1=星际卫星运动轨迹;<BR>&nbsp;&nbsp; j2=欢迎您使用该系统;<BR>&nbsp;&nbsp; 
            j3=地;<BR>&nbsp;&nbsp; j4=球;<BR><BR>&nbsp;&nbsp; 
            /*因为没有HZK24,所以下面一段显示汉字的程序没有调试*/<BR>/*&nbsp;&nbsp; 
            xshz(j1,100,10,1,1,15,1,k,10);<BR>&nbsp;&nbsp; 
            xshz(j2,100,400,1,1,2,0,s,10);<BR>&nbsp;&nbsp; 
            xshz(j3,310,200,0,0,14,0,s,1);<BR>&nbsp;&nbsp; 
            xshz(j4,310,240,0,0,14,0,s,1);<BR>*/<BR><BR>&nbsp;&nbsp; 
            for(i=0;i&lt;600;i+=STEP){<BR>&nbsp;&nbsp; 
            putimage(cx+i,cy,covered,COPY_PUT);<BR>&nbsp;&nbsp; 
            getimage(cx+STEP+i,cy,cx+SIZE+STEP+i,cy+SIZE,covered);<BR>&nbsp;&nbsp; 
            putimage(cx+STEP+i,cy,andmask,AND_PUT);<BR>&nbsp;&nbsp; 
            putimage(cx+STEP+i,cy,xormask,XOR_PUT);<BR>&nbsp;&nbsp; 
            delay(DELAY);<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; 
            getch();<BR>&nbsp;&nbsp; closegraph();<BR>&nbsp;&nbsp; return 
            0;<BR>}</P>
            <P>void get_mask(x,y,color1,color2)<BR>{<BR>&nbsp;&nbsp; 
            moveto(x+10,y);<BR>&nbsp;&nbsp; setcolor(color1);<BR>&nbsp;&nbsp; 
            linerel(-3*3,2*4);<BR>&nbsp;&nbsp; moveto(x+10,y);<BR>&nbsp;&nbsp; 
            linerel(-3*3,-2*4);<BR>&nbsp;&nbsp; moveto(x+25,y);<BR>&nbsp;&nbsp; 
            linerel(-5*5,0);<BR>&nbsp;&nbsp; 
            setfillstyle(1,color2);<BR>&nbsp;&nbsp; 
            fillellipse(x+13,y,8,8);<BR>}</P>
            <P>void putstar(void)<BR>{<BR>&nbsp;&nbsp; int 
            seed=1993;<BR>&nbsp;&nbsp; int 
            i,dotx,doty,h,w,color,maxcolor;<BR>&nbsp;&nbsp; 
            maxcolor=getmaxcolor();<BR>&nbsp;&nbsp; w=getmaxx();<BR>&nbsp;&nbsp; 
            h=getmaxy();<BR>&nbsp;&nbsp; srand(seed);<BR>&nbsp;&nbsp; 
            for(i=0;i&lt;5000;++i)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp; 
            dotx=1+random(w-1);<BR>&nbsp;&nbsp; 
            doty=1+random(h-1);<BR>&nbsp;&nbsp; 
            color=random(maxcolor);<BR>&nbsp;&nbsp; 
            putpixel(dotx,doty,color);<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; 
            srand(seed);<BR>}</P>
            <P>void draw_earth()<BR>{<BR>&nbsp;&nbsp; int midx, 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -