KingDZ 变菜鸟,每日一个C#小实例之---控制美女头像

呵呵,记住偶的博客域名  www.cnblogs.com/hihell

为什么叫这个呢?因为我想叫  hi+hello 结果一不小心没打上o直接就成hihell了,哈哈哈哈

好了,从今天开始呢,偶就是每天写几个小实例,当然都是关于C#的,可能偶尔我会写一下ASP.NET的,不过,看时间了,当然呢,我这些文章里面可能很多都是很简单的,所以呢,老鸟飞过。

 

特别声明:本系列文章,读者范围为:了解C#基本语言,或者学过C#半年以上,望高手飞过,嘴下留情。

哈哈,俺KingDZ又要变回那个青涩的菜菜了。

说白了,其实我下面的文章,不管你是高手,还是菜菜。都会学到一些有价值的东东,要不俺写他干什么啊,自娱自乐,哈哈。

好了,废话不多说,直接开始我们今天的第一个例子,用键盘控制美女头像,乱动,哈哈,偶用JS写过,偶用HTML5写过,偶也用过C#写过,其他的啊,其他的偶用Silverlight写过....

开始吧。第一步,准备图片。

1

然后我们开始加载我们的头像-----我采用的是动态加载的办法,因为这个有一个好处就是,方便大家以后修改,-----当然我们可以采用某些设计模式。

string imgPath = string.Empty;
imgPath = Directory.GetCurrentDirectory().Substring(0,Directory.GetCurrentDirectory().Length-10)+@"/Image/1.jpg";
pic.Load(imgPath);
pic.SizeMode = PictureBoxSizeMode.Zoom;

这里面说一下,一点点有技术含量的地方,---------------得到winForm的路径,哈哈,其实简单的不行,就是  Directory

它是一个获取软件运行目录的类,以后我们的实例中可定会遇到他在其他方面的应用,具体的用法还需要大家慢慢的去体会.

好了,下面我们要做的就是移动图片了,移动图片,需要的有什么呢?第一:方向,当然我们这次先采用4个方向,第二:速度

好了,开始准备啊.我们先添加一个Move类,这个为一会我们的程序做准备,好了,我们下面来熟悉一下窗体的坐标.

首先找到窗体的 KeyDown 事件,这个毫无疑问,就是按键盘的事件,当然,你要是自己可以用委托去写,俺也不管地。

MessageBox.Show(e.KeyCode.ToString()+":"+e.KeyValue);

哈哈,好了,我们先找到,我们需要的这几个键对应的值

4123

OK,看到了吗,这么着很简单就测出来我们需要的按键了,我们用冒号前面的也行,后面的也行,看你自己的了。

然后我们继续。下面我们可以得到的是图片的长宽和坐标。

在窗体的Load事件里面添加 

lblWidth.Text = pic.Width.ToString();
lblHeight.Text = pic.Height.ToString();
lblX.Text = pic.Left.ToString();
lblY.Text = pic.Top.ToString();

1

大家不要觉得没有意义,上面的很简单,可是,大家知不知道,有时,最有用的就是这些简单的小测试。

我们下面所做的移动,无非就是,当按下键盘 ← 然后图片的X坐标减去速度和图片本身的长度呢,举个简单的例子就是,假如图片的移动速度是5,然后图片的长度是10,下载的X坐标是100,好了,也就是说按下 ←  ,X坐标就变成了 95 了,呵呵,图片的长度就是一个判断,防止图片移动出窗体。OK,我们下面实现的左右移动。

完善Move类

enum Direction
    {
        Left,
        Right,
        Up,
        Down
    }

声明一个枚举,用来记录按下那个方向了。

class Move
{
    int speed = 5;
    public int GetMove(Direction direction)
    {
        int movenum = 0;
        switch (direction)
        {
            case Direction.Right:
            case Direction.Up:
                movenum = +speed;
                break;
            case Direction.Left:
            case Direction.Down:
                movenum = -speed;
                break;
            default:
                movenum = 0;
                break;
        }
        return movenum;
    }
}

这个很好理解了,speed 的移动的速度。  然后我们返回相应的数值即可,特别注意的就是我们的这个按下  ↑  →  则是加速,相应的那个是减速。呵呵,其实也不能这么理解,自己慢慢体会吧,

好了,左右移动实现完成了

private void Form1_KeyDown(object sender, KeyEventArgs e)
    {

        Move m = new Move();
        switch (e.KeyCode.ToString())
        {
            case "Left":
                pic.Left += pic.Left > 0 ? m.GetMove(Direction.Left) : 0;
                break;
            case "Right":
                pic.Left += pic.Left < this.Size.Width - pic.Width ? m.GetMove(Direction.Right) : this.Size.Width - pic.Width;
                break;
            default:
                break;
        }

        lblWidth.Text = pic.Width.ToString();
        lblHeight.Text = pic.Height.ToString();
        lblX.Text = pic.Left.ToString();
        lblY.Text = pic.Top.ToString();

    }

这里面要说明的就是一些,关于窗体坐标和咱们图片的坐标了,防止就是图片移动到不是窗体的部分,那就看不到了,哈哈,  this.Size.Width是获取窗体的宽度。其他的就是一些简单的逻辑了,大家自己吧

上下方向的移动自己做好了吧。

简单的窗体移动时间了,当然你可以让他自己移动。

这个需要是的我们的  time_tick事件了,哈哈,贪吃蛇的原理就是这么实现的,你可以自己尝试一下。简单的例子里面可能包含很多基础的东西。

这篇文章到此结束了,大家自己看看能收获多少吧,

高手飞过,谨以此系列文章献给刚刚入门的菜鸟。

代码下载  https://files.cnblogs.com/hihell/MovePic.rar

posted @ 2011-09-14 13:18  KingDZ  阅读(1247)  评论(2编辑  收藏  举报