当前位置:编程学习 > C#/ASP.NET >>

「玩一玩」自定义鼠标光标组件——游戏中常用的物品、技能图标拖动

--------------------编程问答-------------------- --------------------编程问答-------------------- 恩,楼主做的不错啊呵呵!!! --------------------编程问答--------------------
引用 1 楼  的回复:
支持一下

收到。

洗个澡睡觉。。追踪者太可怕了,一集一个小时,看了一夜一半都没看完。。 --------------------编程问答-------------------- 支持,改变鼠标样式用的就是Cursor --------------------编程问答-------------------- 野比 小王子又有新玩意出来了 --------------------编程问答-------------------- 又是好玩的 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 不错,要是能把裁切图片的方法公布一下就更好了 --------------------编程问答-------------------- 野比是个wower? --------------------编程问答-------------------- 支持支持,这样的拖动效果在很多时候都用的到! --------------------编程问答--------------------  很强大。 --------------------编程问答-------------------- 诶 貌似还不错哦 --------------------编程问答-------------------- 不错。。。 --------------------编程问答-------------------- 楼主是游戏行业的? --------------------编程问答-------------------- --------------------编程问答-------------------- 楼主是游戏行业的? --------------------编程问答-------------------- 楼主是游戏行业的? --------------------编程问答-------------------- 目测LZ 练的是个德鲁伊 来卖萌的吧 --------------------编程问答-------------------- 目测LZ练的是德鲁伊 来卖萌的吧 --------------------编程问答-------------------- --------------------编程问答-------------------- 有意思,LZ是在享受编程的乐趣,支持下 --------------------编程问答-------------------- 韩剧一集一个多小时,不像美剧,一集四十来分钟... --------------------编程问答--------------------
引用 12 楼  的回复:
不错,要是能把裁切图片的方法公布一下就更好了
百度 --------------------编程问答-------------------- 不错,挺好的。 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 18 楼  的回复:
楼主是游戏行业的?


不是 --------------------编程问答-------------------- 目测。 是猎人。

还有个法师。 --------------------编程问答-------------------- 不用目测就知道LZ是野比。
每个野比后面都有一个ドラえもん。 --------------------编程问答-------------------- 敏捷型 --------------------编程问答--------------------
引用 32 楼  的回复:
不用目测就知道LZ是野比。
每个野比后面都有一个ドラえもん。


--------------------编程问答-------------------- 好东西啊~~找了好久! --------------------编程问答-------------------- 如果可以。直接发个游戏源码 就好了。。 期待 传说的野比神游. --------------------编程问答-------------------- 神器自重 --------------------编程问答-------------------- --------------------编程问答-------------------- 神器啊神器 --------------------编程问答-------------------- 太棒了
--------------------编程问答-------------------- 赞原创 --------------------编程问答-------------------- 好亲切的功能。。 --------------------编程问答-------------------- 有意思 --------------------编程问答-------------------- 不错.... --------------------编程问答-------------------- 不错 --------------------编程问答-------------------- 很棒!!! --------------------编程问答-------------------- 我也来支持一下。。 --------------------编程问答-------------------- 很棒,支持一下。。 --------------------编程问答-------------------- 很棒,支持一下。。 --------------------编程问答-------------------- 想法很好,我也可以学习了,谢谢 --------------------编程问答-------------------- 不错 怎么提示错误 1 类型“CoolCursor.CoolCursor”中不存在类型名称“CoolCursor” --------------------编程问答-------------------- --------------------编程问答-------------------- 厉害啊 --------------------编程问答-------------------- 不错 怎么提示错误 1 类型 --------------------编程问答--------------------
引用 51 楼  的回复:
不错 怎么提示错误 1 类型“CoolCursor.CoolCursor”中不存在类型名称“CoolCursor”


有时候代码生成器生成的构造函数有问题,本来应该是 new CoolCursor() 结果生成了 new CoolCursor.CoolCursor(),于是就出现上面的错误。删掉多余的就行了。 --------------------编程问答-------------------- 这个还是需要多看看的 --------------------编程问答-------------------- 我改造了下
每次可以拖走,拖走之后放在最后边,本想实现放在指定位置的,太复杂没弄<br />
请大神指教






--------------------编程问答-------------------- http://blog.csdn.net/yahali/article/details/7719473 --------------------编程问答-------------------- 改之后的代码


Hashtable registry = new Hashtable();  
  
  
private Control moveObj = null;  
private Image moveImg = null;  
  
private Control boxC = null;  
  
public Control BoxC  
{  
    get { return boxC; }  
    set { boxC = value; }  
}  
  
  
  
public void Register(Control c, Image img)  
{  
    registry[c] = img;  
    c.MouseDown += new MouseEventHandler(mouseDown);  
    c.MouseUp += new MouseEventHandler(mouseUp);  
}  
  
public void Unregister(Control c)  
{  
    if (registry[c] != null)  
    {  
        registry.Remove(c);  
        c.MouseDown -= new MouseEventHandler(mouseDown);  
        c.MouseUp -= new MouseEventHandler(mouseUp);  
    }  
}  

事件

[csharp] view plaincopy
private void mouseDown(object sender, MouseEventArgs e)  
{  
    mouseDownFlag = true;  
  
    if (!(sender is Control))  
        return;  
  
    Control c = sender as Control;  
    Image img = registry[c] as Image;  
    if (img != null)  
    {  
        Bitmap bmp = new Bitmap(img);  
        Cursor cur = new Cursor(bmp.GetHicon());  
        Cursor.Current = cur;  
    }  
    c.Visible = false;  
    moveObj = c;  
    moveImg = img;  
    registry.Remove(c);  
}  
  
public void mouseUp(object sender, MouseEventArgs e)  
{  
    if (moveObj != null && moveImg != null)  
    {  
        moveObj.Visible = true;  
        registry[moveObj] = moveImg;  
  
        if (boxC != null && boxC is FlowLayoutPanel)  
        {  
            FlowLayoutPanel flp = boxC as FlowLayoutPanel;  
            if (flp != null)  
            {  
                flp.Controls.Remove(moveObj);  
                flp.Controls.Add(moveObj);  
            }  
        }  
        moveObj = null;  
        moveImg = null;  
    }  
}  

form里
[csharp] view plaincopy
private void Form1_Load(object sender, EventArgs e)  
{  
    if (imageList1.Images.Count > 0)  
    {  
        foreach (Image img in imageList1.Images)  
        {  
            PictureBox pb = new PictureBox();  
            pb.Name = "#" + flowLayoutPanel1.Controls.Count;  
            pb.SizeMode = PictureBoxSizeMode.AutoSize;  
            pb.Image = img;  
            flowLayoutPanel1.Controls.Add(pb);  
            //flowLayoutPanel1.MouseUp += new MouseEventHandler(coolCursor1.MouseUp);  
            coolCursor1.Register(pb, pb.Image);  
        }  
        coolCursor1.BoxC = flowLayoutPanel1;  
    }  
}  
  --------------------编程问答-------------------- --------------------编程问答--------------------
引用 57 楼  的回复:
我改造了下
每次可以拖走,拖走之后放在最后边,本想实现放在指定位置的,太复杂没弄<br />
请大神指教




C# code


 

给力!

用这个方法设置控件索引 flowLayoutPanel1.Controls.SetChildIndex()

引用
调用 SetChildIndex 时,将把 child 参数所引用的 Control 移动到 newIndex 指定的位置,并将重新调整 Control.ControlCollection 中的其他 Control 引用的顺序以适应此次移动。索引值为零的控件位于 Z-顺序的顶部,数字越大距底部越近。
--------------------编程问答-------------------- 支持一下 想法很重要,
熟悉类库,可以使实现更简单 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --貌似这个做大型游戏不行 ,大型游戏的窗口都是自己写 , 抛除所有windows控件 --------------------编程问答-------------------- CSDN越来越没料了感觉......这个也能推荐.... --------------------编程问答-------------------- 激起了我分享的斗志,,哈。。。 --------------------编程问答-------------------- --------------------编程问答-------------------- 不错。。。 --------------------编程问答-------------------- 支持一下。很有用 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 太好了,谢谢!
--------------------编程问答-------------------- --------------------编程问答-------------------- 到现在才看见这帖子  相见恨晚啊  
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,