101 пример Rx

MySQL также использует MVCC по умолчанию при использовании таблиц InnoDB: http://dev.mysql.com/doc/refman/5.0/en/innodb-multi-versioning.html

38
задан Ruben Bartelink 26 April 2010 в 09:05
поделиться

3 ответа

Пару дней назад у меня действительно были похожие мысли. Мы начали наш собственный «101 Rx Samples» как сообщение на форуме Rx MSDN, но с тех пор переместили его в формат Wiki. Не стесняйтесь заходить и добавлять свои собственные образцы!

101 Rx Samples на Rx wiki

27
ответ дан 27 November 2019 в 03:41
поделиться

Для начала - Вот простое приложение для рисования, поэтому что когда пользователь перетаскивает, мы рисуем красную линию от исходного положения мыши вниз до текущего местоположения, а также синюю точку в текущем местоположении. Это результат моего взлома на прошлой неделе на Rx

A WPF Drawing Demo

И вот исходный код.

//A draw on drag method to perform the draw
void DrawOnDrag(Canvas e)
        {

            //Get the initial position and dragged points using LINQ to Events
            var mouseDragPoints = from md in e.GetMouseDown()
                                  let startpos=md.EventArgs.GetPosition(e)
                                  from mm in e.GetMouseMove().Until(e.GetMouseUp())
                                  select new
                                  {
                                      StartPos = startpos,
                                      CurrentPos = mm.EventArgs.GetPosition(e),
                                  };


            //Subscribe and draw a line from start position to current position
            mouseDragPoints.Subscribe
                (item =>
                {
                    e.Children.Add(new Line()
                    {
                        Stroke = Brushes.Red,
                        X1 = item.StartPos.X,
                        X2 = item.CurrentPos.X,
                        Y1 = item.StartPos.Y,
                        Y2 = item.CurrentPos.Y
                    });

                    var ellipse = new Ellipse()
                    {
                        Stroke = Brushes.Blue,
                        StrokeThickness = 10,
                        Fill = Brushes.Blue
                    };
                    Canvas.SetLeft(ellipse, item.CurrentPos.X);
                    Canvas.SetTop(ellipse, item.CurrentPos.Y);
                    e.Children.Add(ellipse);
                }
                );
        }

Прочтите мой пост с дальнейшими пояснениями здесь и Загрузите исходный код здесь

Надеюсь, это поможет

13
ответ дан 27 November 2019 в 03:41
поделиться

Вот мой вариант примера перетаскивания Уэса Дайера для Windows Forms (я бы сделал EnableDragging методом расширения, возможно):

    public Form2()
    {
        InitializeComponent();

        EnableDragging(pictureBox1);
        EnableDragging(button1);
        EnableDragging(this);
    }

    private void EnableDragging(Control c)
    {
        // Long way, but strongly typed.
        var downs = from down in Observable.FromEvent<MouseEventHandler, MouseEventArgs>(
                        eh => new MouseEventHandler(eh), 
                        eh => c.MouseDown += eh,  
                        eh => c.MouseDown -= eh)
                    select new { down.EventArgs.X, down.EventArgs.Y };

        // Short way.
        var moves = from move in Observable.FromEvent<MouseEventArgs>(c, "MouseMove")
                    select new { move.EventArgs.X, move.EventArgs.Y };

        var ups = Observable.FromEvent<MouseEventArgs>(c, "MouseUp");

        var drags = from down in downs
                    from move in moves.TakeUntil(ups)
                    select new Point { X = move.X - down.X, Y = move.Y - down.Y };

        drags.Subscribe(drag => c.SetBounds(c.Location.X + drag.X, c.Location.Y + drag.Y, 0, 0, BoundsSpecified.Location));
    }  
4
ответ дан 27 November 2019 в 03:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: