Рисование линий с мгновенной реакцией на движение мыши? - PullRequest
3 голосов
/ 16 марта 2012

Я пытаюсь понять, как написать код, чтобы время отклика между движением мыши и рисованием линии было мгновенным.Каждый раз, когда я делаю это, всегда есть лага между 2. Я закодировал это в формах Windows, и теперь я кодирую это в WPF.

Проблема определенно заключается в коде, а не в моем компьютере.

В основном это работает так.Нажмите где угодно, и точка1 будет создана.Переместите мышь, и точка2 будет обновлена, и от точки1 до точки2 будет проведена линия, которая изменяется при движении мыши.

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

Кроме того, в будущем будет слой под этим слоем, который наверняка заставит его отставать еще больше .. Носейчас я просто хочу оптимизировать это.

Когда я использовал другие подобные программы более 5 лет назад, движение линии было фактически мгновенным.Вот почему я запутался, почему с этим более новым кодированием, его запаздывает ..

    Point mLoc;
    Line myLine = new Line();


    public MainWindow()
    {
        InitializeComponent();
        SnapsToDevicePixels = false;

        myLine.Stroke = System.Windows.Media.Brushes.White;
        myLine.StrokeThickness = 1;

        canvas1.Children.Add(myLine);
    }

    private void onMMove(object sender, MouseEventArgs e)
    {
        mLoc = Mouse.GetPosition(canvas1);

        myLine.X2 = mLoc.X;
        myLine.Y2 = mLoc.Y;


    }

    private void onMLClick(object sender, MouseButtonEventArgs e)
    {
        mLoc = Mouse.GetPosition(canvas1);

        myLine.X1 = mLoc.X;
        myLine.Y1 = mLoc.Y;

    }

1 Ответ

2 голосов
/ 16 марта 2012

WinAPI не отправляет WM_MOUSEMOVE достаточно быстро, чтобы обнаружить каждое движение мыши.Есть очень хорошая статья, которая показывает, как очень точно определять движение мыши (http://blogs.msdn.com/b/oldnewthing/archive/2012/03/14/10282406.aspx)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...