Плавное перемещение usercontrol по области Grid'a [WPF]

87
20 апреля 2021, 10:20

Поискал по сайту и ответа на мой вопрос я не нашел, поэтому решил создать новую тему. У меня есть полноэкранный Grid в котором находится usercontrol перемещаемый с помощью TranslateTransform. Все бы нечего если бы usercontrol успевал отрисовываться при перемещении... в итоге получается эффект как в старых ОС с тенью от мышки. Grid с WebControl идет четко за мышкой а позади рывками перемещается само окно...

Единственным выходом я вижу затормозить всего usercontrol'a до полной отрисовки. Так как делается в играх... Там окна перетаскиваются не точно за мышкой а с небольшим торможением. (Это не сильно затормозит перемещение но без него очень режет глаз отстающий рендер контола.)

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

привожу пример XAML разметки и событий по перемещению.

<UserControl x:Name="Browser" x:Class="ELUM.UI.Controls.ELUMBrowser"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:eo = "http://schemas.essentialobjects.com/wpf/"
             xmlns:local="clr-namespace:ELUM.UI.Controls"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800" HorizontalAlignment="Left" VerticalAlignment="Top" Width="800" Height="450">
    <UserControl.RenderTransform>
        <TranslateTransform x:Name="timer_tt"/>
    </UserControl.RenderTransform>
    <Grid x:Name="browser" Background="#FF18191D">
        <Grid x:Name="TopViev" Background="#FF3A4047" Height="50" VerticalAlignment="Top" MouseLeftButtonDown="Browser_MouseLeftButtonDown" MouseLeftButtonUp="Browser_MouseLeftButtonUp" MouseMove="Browser_MouseMove"/>
        <Grid Margin="3,50,3,3">
            <eo:WebControl x:Name="WebControl" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" >
                <eo:WebControl.RenderTransform>
                    <TranslateTransform x:Name="EOWebControl"/>
                </eo:WebControl.RenderTransform>
                <eo:WebControl.WebView >
                    <eo:WebView x:Name="WebView" Url = "vk.com" >
                    </eo:WebView >
                </eo:WebControl.WebView >
            </eo:WebControl >
        </Grid>
    </Grid>
</UserControl>

        static Vector m_startOffset_timer;
        Point m_start;
        private void Browser_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            m_start = e.GetPosition((this.Parent as Grid));
            m_startOffset_timer = new Vector(timer_tt.X, timer_tt.Y);
            TopViev.CaptureMouse();
        }
        private void Browser_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            TopViev.ReleaseMouseCapture();
        }
        private void Browser_MouseMove(object sender, MouseEventArgs e)
        {
            if (TopViev.IsMouseCaptured)
            {
                Vector offset = Point.Subtract(e.GetPosition((this.Parent as Grid)), m_start);
                timer_tt.X = m_startOffset_timer.X + offset.X;
                timer_tt.Y = m_startOffset_timer.Y + offset.Y;
            }
        }
READ ALSO
Как объединить три массива в один?

Как объединить три массива в один?

У меня есть три массиваПервый

116
Laravel удаление модели из БД

Laravel удаление модели из БД

Не удаляет запись из БД

78
Вывести все изображения при помощи wp_get_attachment_link

Вывести все изображения при помощи wp_get_attachment_link

Хочу вывести все изображения которые были добавлены, но сейчас отображается только одно'sertificates_gallery' - ID галереи из Advanced Custom Fields

90
Не появляется кнопка &ldquo;Ответить&rdquo; на комментарий WordPress

Не появляется кнопка “Ответить” на комментарий WordPress

Не появляется кнопка "Ответить на комментарий" в WordPressПробовала различные варианты, сейчас код выглядит так, в functions

100