首页 > 开发 > 综合 > 正文

C#--一直飞翔的小鸟

2024-07-21 02:17:26
字体:
来源:转载
供稿:网友
 

一接触到c#就被它的魅力所吸引,vb一样快速开发,c++一样的间接语法,简直就是完美的统一.呵呵.

所以,写了个小程序,可以在桌面上飞来飞去,如果这个程序要是用vb6来做,一定会很麻烦,而且需要调用到api函数.可是利用vs,仅仅需要动动鼠标,改改属性即可,简直太方便了!

首先,准备好小鸟的素材,最好gif动画的,省却代码来实现动画(但无法控制动画速度了).

然后就是添加控件,2个timer用来控制方向和动画,一个contextmenu实现右键菜单.(当然,你也可以不添加而是手写代码,但这样就无法体现出快速开发的特性了.尽管ide自己生成的代码很啰唆)

这里要用到三个比较重要的特性:

1.窗体的topmost实现动画的最前端显示

2.窗体的透明属性(transparencykey)来实现非矩形外观

3.窗体的背景图片(backgroundimage)属性来显示小鸟

在方法的实现上要注意两点:

1.小鸟飞到边缘的转向

2.鼠标移动无边框窗体


好了,来看看具体代码的实现吧:

//实现飞行转向

private void timmove_tick(object sender, system.eventargs e)
  {
   if(this.left<=0)
   {
    this.movetoleft=false;
    this.backgroundimage=this.imagelist1.images[4];
    this.movex=5;
   }

   if(this.left>=system.windows.forms.screen.primaryscreen.workingarea.width-this.width)
   {
    this.movetoleft=true;
    this.backgroundimage=this.imagelist1.images[0]; 
    this.movex=-5;
   }
   if(this.top<=0)
   {
    this.movey=5;
   }
   if(this.top>=system.windows.forms.screen.primaryscreen.workingarea.height-this.height)
   {
    this.movey=-5;
   }
   this.left+=movex;
   this.top+=movey;
  }


//实现鼠标移动无边框窗体

private void form1_mousedown(object sender, system.windows.forms.mouseeventargs e)
  {
   if(e.button==mousebuttons.left)
   {
    canmove=true;
    curx=e.x;
    cury=e.y;
   }
  }

  private void form1_mouseup(object sender, system.windows.forms.mouseeventargs e)
  {
   canmove=false;
  }

  private void form1_mousemove(object sender, system.windows.forms.mouseeventargs e)
  {
   if(canmove)
   {
    this.left = this.left + e.x - curx;
    this.top = this.top + e.y - cury;
   }
  }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表