首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#如何模拟鲁塞手势

C#如何模拟鲁塞手势
EN

Stack Overflow用户
提问于 2013-08-27 12:26:54
回答 1查看 157关注 0票数 0

我正在尝试重新创建populare智能手机游戏“鲁兹”的窗口与C#。我被困在试图找出什么c#事件可以模拟鲁塞手势。

如果你不熟悉这个游戏,这里有一个简短的视频。1:13 4vduo

我创建了一个"Check“类,如下所示:

代码语言:javascript
复制
public partial class Check: UserControl
    {
        public Check()
        {
            InitializeComponent();
        }
        string _letter; //letter contained  in the check

        public string Letter
        {
            get { return _letter; }
            set { _letter = value; }
        }
        int _value; //value of the letter

        public int Value
        {
            get { return _value; }
            set { _value= value; }
        }

        bool _selected; //if true orange background else white background

        public bool Selected
        {
            get { return _selected; }
            set { _selected= value; }
        }
        public Check(string l)
        {
            this._letter = l.ToUpper();
            this._selected = false;
            this.Size = new Size(100, 100);
            this.Paint += new PaintEventHandler(Check_Paint);
        }

        void Check_Paint(object sender, PaintEventArgs e)
        {
            Rectangle area = new Rectangle(new Point(0, 0), new Size(Height-3, Width-3));
            if (!Selezionato)
            {
                e.Graphics.DrawRectangle(Pens.Black, new Rectangle(new Point(0, 0), new Size(Height, Width)));
                e.Graphics.FillRectangle(Brushes.White, area);
                e.Graphics.DrawString(this._letter, DefaultFont, Brushes.Black, new PointF(Height / 3, Width /3));
                e.Graphics.DrawString(this._value.ToString(), DefaultFont, Brushes.Black, new PointF(Height-15, Width-15));
            }
            else
            {
                e.Graphics.DrawRectangle(Pens.Black, area);
                e.Graphics.FillRectangle(Brushes.Orange, area);
                e.Graphics.DrawString(this._letter, DefaultFont, Brushes.Black, new PointF(Height / 3, Width ));
                e.Graphics.DrawString(this._value.ToString(), DefaultFont, Brushes.Black, new PointF(Height, Width));
            }
        }

比我有一个类“游戏”来管理二维数组的“检查”。

代码语言:javascript
复制
class Game
    {
        Scacco[,] myGame;

        public Game(Control father)
        {
            myGame= new Check[4, 4];

            for (int i = 0; i < 4; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    myGame[i, j] = new Check("l");
                    myGame[i, j].Location = new Point((i * (myGame[i, j].Width) + 10), (j * (myGame[i, j].Height )+ 10));

                    father.Controls.Add(myGame[i, j]);
                }
            }
        }
    }

在这里,我需要弄清楚是否有“当鼠标关闭时”这样的事件。我知道鼠标向下事件是存在的,但它只适用于一次检查:我一将鼠标悬停在另一次检查上,事件就无法识别我的鼠标仍然关闭。

请告诉我我的解释是否清楚。提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2013-08-27 12:46:25

MouseMove事件将在鼠标关闭时生成,但只生成最初捕获鼠标的Win32窗口。如果不使用捕获,则消息会转到鼠标下面的窗口。

当然,要区分“用鼠标向下移动”和“释放所有鼠标按钮的移动”,您可以在MouseDown事件中设置一个标志。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18465415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档