示例#1
0
        public bool IsMouseOver(Point screen)
        {
            if (!isReady)
            {
                return(false);
            }

            Point client;

            if (InvokeRequired)
            {
                PointDelegate deleg = new PointDelegate(IsMouseOver);
                Object        o     = this.Invoke(deleg, new object[] { screen });
                if (o == null)
                {
                    return(false);
                }

                return((bool)o);
            }

            client = this.PointToClient(screen);

            bool over = this.ClientRectangle.Contains(client);

            if (!over)
            {
                // LogManager.Singleton.LogMessage(LogMessageLevel.LML_CRITICAL, "IsMouseOver=false");
            }

            return(over);
        }
示例#2
0
 static void OverridePoint(GLib.GType gtype)
 {
     if (PointCallback == null)
     {
         PointCallback = new PointDelegate(Point_cb);
     }
     gnomesharp_canvas_item_override_point(gtype.Val, PointCallback);
 }
示例#3
0
        public void test_MoveRequest_fromView()
        {
            Point point = new Point(1, 2);

            modelMock.Expect("MoveRequest", point);
            PointDelegate trigger = moveRequestConstraint.GetInstance as PointDelegate;

            trigger(point);
        }
示例#4
0
文件: FindPath.cs 项目: znsoft/AiCup
        public static bool EnumeratePointsBetween(Point from, Point to, double maxDelta, PointDelegate callback)
        {
            if (from.Equals(to))
            {
                return(callback(from.Clone()));
            }

            var c = (int)(from.GetDistanceTo(to) / maxDelta + 2);

            maxDelta = from.GetDistanceTo(to) / c;
            var dir = (to - from).Normalized();

            for (var i = 0; i <= c; i++)
            {
                // from + dir * (maxDelta * i)
                if (!callback(new Point(from.X + dir.X * maxDelta * i, from.Y + dir.Y * maxDelta * i)))
                {
                    return(false);
                }
            }
            return(true);
        }
示例#5
0
 static extern void gnomesharp_canvas_item_override_point(IntPtr gtype, PointDelegate cb);
示例#6
0
文件: FindPath.cs 项目: znsoft/AiCup
        public static bool EnumeratePointsBetween(Point from, Point to, double maxDelta, PointDelegate callback)
        {
            if (from.Equals(to))
                return callback(from.Clone());

            var c = (int)(from.GetDistanceTo(to) / maxDelta + 2);
            maxDelta = from.GetDistanceTo(to) / c;
            var dir = (to - from).Normalized();
            for (var i = 0; i <= c; i++)
            {
                // from + dir * (maxDelta * i)
                if (!callback(new Point(from.X + dir.X * maxDelta * i, from.Y + dir.Y * maxDelta * i)))
                    return false;
            }
            return true;
        }
示例#7
0
 public void SubscribeMoveRequest(PointDelegate listener)
 {
     MoveRequestEvent += listener;
 }
示例#8
0
        public void createButton()
        {
            Button button1   = new System.Windows.Forms.Button();
            var    nDeleg    = new PointDelegate(GetPoint);
            var    nDelegSet = new SetPointDelegate(SetPoint);
            Random rnd       = new Random();

            button1.Name = "button_" + (++counter);
            int size = rnd.Next(15, 100);

            button1.Size = new System.Drawing.Size(size, size);
            Point btnpos = new Point(rnd.Next(0 + 2 * button1.Size.Width, ActiveForm.Size.Width - 2 * button1.Size.Width), rnd.Next(0 + 2 * button1.Size.Height, ActiveForm.Size.Height - 2 * button1.Size.Height));

            button1.Location  = btnpos;
            button1.TabIndex  = 0;
            button1.BackColor = Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256));
            button1.UseVisualStyleBackColor = false; //!!!
            button1.Text = "";
            this.Invoke((MethodInvoker)(() => Controls.Add(button1)));
            //button1.MouseMove += new System.Windows.Forms.MouseEventHandler(moveBtn);
            //button1.Click += new System.EventHandler(createButton);
            //while (true) { Thread.Sleep(1000); }
            btns.Add(button1);
            while (true)
            {
                try
                {
                    Button btn = button1;
                    //Point pos = btn.PointToClient(Cursor.Position);
                    Point     pos    = (Point)Invoke(nDeleg, btn);
                    Point     center = new Point(((pos.X - (btn.Size.Width / 2)) + Math.Sign(pos.X - (btn.Size.Width / 2))), ((pos.Y - (btn.Size.Height / 2)) + Math.Sign(pos.Y - (btn.Size.Height / 2))));
                    const int offset = 0;
                    if (pos.X < btn.Width + offset && pos.X > 0 - offset && pos.Y > 0 - offset && pos.Y < btn.Height + offset)
                    {
                        if ((float)Math.Abs(center.X) / (btn.Size.Width / 2) > (float)Math.Abs(center.Y) / (btn.Size.Height / 2))
                        {
                            Invoke(nDelegSet, btn, new Point(btn.Location.X + center.X + Math.Sign(-center.X) * (btn.Size.Width / 2), btn.Location.Y));
                        }
                        else
                        {
                            if ((float)Math.Abs(center.X) / (btn.Size.Width / 2) == (float)Math.Abs(center.Y) / (btn.Size.Height / 2))
                            {
                                Invoke(nDelegSet, btn, new Point(btn.Location.X + center.X + Math.Sign(-center.X) * (btn.Size.Width / 2), btn.Location.Y + center.Y + Math.Sign(-center.Y) * (btn.Size.Height / 2)));
                            }
                            else
                            {
                                Invoke(nDelegSet, btn, new Point(btn.Location.X, btn.Location.Y + center.Y + Math.Sign(-center.Y) * (btn.Size.Height / 2)));
                            }
                        }

                        Form ActiveForm = button1.Parent as Form;
                        try
                        {
                            if (btn.Location.X > ActiveForm.Size.Width - 2 * btn.Size.Width)
                            {
                                Invoke(nDelegSet, btn, new Point(ActiveForm.Size.Width - 2 * btn.Size.Width, btn.Location.Y));
                            }
                            if (btn.Location.X < 0 + btn.Size.Width)
                            {
                                Invoke(nDelegSet, btn, new Point(0 + btn.Size.Width, btn.Location.Y));
                            }
                            if (btn.Location.Y > ActiveForm.Size.Height - 2 * btn.Size.Height)
                            {
                                Invoke(nDelegSet, btn, new Point(btn.Location.X, ActiveForm.Size.Height - 2 * btn.Size.Height));
                            }
                            if (btn.Location.Y < 0 + btn.Size.Height)
                            {
                                Invoke(nDelegSet, btn, new Point(btn.Location.X, 0 + btn.Size.Height));
                            }
                        }
                        catch
                        {
                            //idk
                        }
                    }
                    Thread.Sleep(delay);
                }
                catch
                {
                }
            }
        }
        private void ForEachAbsPoint(PointDelegate ptCallback)
        {
            foreach (var figure in Path.Figures)
            {
                var args = new PointDelegateArgs(figure.StartPoint, figure, "StartPoint");
                ptCallback(args);
                if (args.PointModified)
                {
                    figure.StartPoint = args.Point;
                }

                var lastEndPoint = args;

                foreach (var segment in figure.Segments)
                {
                    if (segment is ArcSegment)
                    {
                        var arc = segment as ArcSegment;
                        args = new PointDelegateArgs(arc.Point, segment, "Point");
                        ptCallback(args);
                        if (args.PointModified)
                        {
                            arc.Point = args.Point;
                        }
                        lastEndPoint = args;
                    }
                    else if (segment is BezierSegment)
                    {
                        var b = segment as BezierSegment;
                        args = new PointDelegateArgs(b.Point1, segment, "Point1", lastEndPoint);
                        ptCallback(args);
                        if (args.PointModified)
                        {
                            b.Point1 = args.Point;
                        }
                        args = new PointDelegateArgs(b.Point3, segment, "Point3");
                        ptCallback(args);
                        if (args.PointModified)
                        {
                            b.Point3 = args.Point;
                        }
                        lastEndPoint = args;
                        args         = new PointDelegateArgs(b.Point2, segment, "Point2", lastEndPoint);
                        ptCallback(args);
                        if (args.PointModified)
                        {
                            b.Point2 = args.Point;
                        }
                    }
                    else if (segment is LineSegment)
                    {
                        var l = segment as LineSegment;
                        args = new PointDelegateArgs(l.Point, segment, "Point");
                        ptCallback(args);
                        if (args.PointModified)
                        {
                            l.Point = args.Point;
                        }
                        lastEndPoint = args;
                    }
                    else if (segment is PolyBezierSegment)
                    {
                        var pb = segment as PolyBezierSegment;
                        for (int n = 0; n < pb.Points.Count; n += 3)
                        {
                            args = new PointDelegateArgs(pb.Points[n + 0], segment, String.Format("Points[{0}]", n + 0), lastEndPoint);
                            ptCallback(args);
                            if (args.PointModified)
                            {
                                pb.Points[n + 0] = args.Point;
                            }
                            args = new PointDelegateArgs(pb.Points[n + 2], segment, String.Format("Points[{0}]", n + 2));
                            ptCallback(args);
                            if (args.PointModified)
                            {
                                pb.Points[n + 2] = args.Point;
                            }
                            lastEndPoint = args;
                            args         = new PointDelegateArgs(pb.Points[n + 1], segment, String.Format("Points[{0}]", n + 1), lastEndPoint);
                            ptCallback(args);
                            if (args.PointModified)
                            {
                                pb.Points[n + 1] = args.Point;
                            }
                        }
                    }
                    else if (segment is PolyLineSegment)
                    {
                        var pl = segment as PolyLineSegment;
                        for (int n = 0; n < pl.Points.Count; ++n)
                        {
                            args = new PointDelegateArgs(pl.Points[n], segment, String.Format("Points[{0}]", n));
                            ptCallback(args);
                            if (args.PointModified)
                            {
                                pl.Points[n] = args.Point;
                            }
                            lastEndPoint = args;
                        }
                    }
                    else if (segment is PolyQuadraticBezierSegment)
                    {
                        var pqb = segment as PolyQuadraticBezierSegment;
                        for (int n = 0; n < pqb.Points.Count; ++n)
                        {
                            args = new PointDelegateArgs(pqb.Points[n + 1], segment, String.Format("Points[{0}]", n + 1));
                            ptCallback(args);
                            if (args.PointModified)
                            {
                                pqb.Points[n + 1] = args.Point;
                            }
                            lastEndPoint = args;
                            args         = new PointDelegateArgs(pqb.Points[n + 0], segment, String.Format("Points[{0}]", n + 0), lastEndPoint);
                            ptCallback(args);
                            if (args.PointModified)
                            {
                                pqb.Points[n + 0] = args.Point;
                            }
                        }
                    }
                    else if (segment is QuadraticBezierSegment)
                    {
                        var qb = segment as QuadraticBezierSegment;
                        args = new PointDelegateArgs(qb.Point2, segment, "Point2");
                        ptCallback(args);
                        if (args.PointModified)
                        {
                            qb.Point2 = args.Point;
                        }
                        lastEndPoint = args;
                        args         = new PointDelegateArgs(qb.Point1, segment, "Point1", lastEndPoint);
                        ptCallback(args);
                        if (args.PointModified)
                        {
                            qb.Point1 = args.Point;
                        }
                    }
                }
            }
        }