一接触到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;
}
}
新闻热点
疑难解答