wpf图片移动时出现跳动问题

roger900909 2017-06-06 10:39:18
//拖拽图片
private void DoMove(ImageEdit img, MouseEventArgs e)
{
if (e.LeftButton != MouseButtonState.Pressed)
return;
System.Windows.Point p1 = e.GetPosition(canvas);
DeltaX = p1.X - point.X;//记录鼠标在X轴的移动距离
DeltaY = p1.Y - point.Y;//记录鼠标在Y轴的移动距离
double newLeft = Canvas.GetLeft(EditImage) + DeltaX; //得到图片Left新位置
double newTop = Canvas.GetTop(EditImage) + DeltaY; //得到图片Top新位置

Canvas.SetLeft(EditImage, newLeft); //为图片赋Left新值
Canvas.SetTop(EditImage, newTop); //为图片赋Top新值

Canvas.SetLeft(canvas, newLeft); //为canvas赋Left新值
Canvas.SetTop(canvas, newTop); //为图canvas赋Top新值
point = e.GetPosition(canvas);
}
<ScrollViewer HorizontalScrollBarVisibility="Auto" DockPanel.Dock="Top" VerticalScrollBarVisibility="Auto" x:Name="sbScroll" ScrollChanged="ScrollViewer_OnScrollChanged">
<dxlc:DataLayoutControl Orientation="Horizontal" MouseLeftButtonUp="sbScroll_MouseLeftButtonUp" MouseDown="ScrollElement_OnMouseDown" MouseLeave="ScrollElement_OnMouseLeave"
MouseMove="sbScroll_MouseMove" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
<Canvas x:Name="canvas" VerticalAlignment="Top" HorizontalAlignment="Left" Width="auto" Height="auto" >
<Label Content="{Binding SelectedItem.EmrNodeText}"
Background="#FFFFFF00" Panel.ZIndex="10" HorizontalContentAlignment="Center" Canvas.Left="200" Padding="50,5,50,5" MouseMove="UIElement_OnMouseMove" />
<dxe:ImageEdit x:Name="EditImage" RenderOptions.BitmapScalingMode="NearestNeighbor" Canvas.Left="0" Canvas.Top="0" ShowMenu="False" Stretch="None"
MouseWheel="ImageMouseWheel" MouseLeftButtonDown="EditImage_MouseLeftButtonDown" DataContextChanged="FrameworkElement_OnDataContextChanged" Source="{Binding SelectedBitmap}" >
<dxe:ImageEdit.LayoutTransform>
<TransformGroup >
<ScaleTransform/>
<TranslateTransform x:Name="tlt"/>
<SkewTransform/>
</TransformGroup>
</dxe:ImageEdit.LayoutTransform>
</dxe:ImageEdit>
</Canvas>
</dxlc:DataLayoutControl>
</ScrollViewer>
移动的时候会出现跳动问题,麻烦大家支招
...全文
371 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
roger900909 2017-06-08
  • 打赏
  • 举报
回复
引用 2 楼 xuggzu 的回复:
wpf下移动图片一般用visual或直接画,就算用自带的image,用楼主的方法也没见过类似帧数太低闪烁问题。所以只能怀疑楼主用的imageedit自身问题。
由于用的DevExpress,换成Image改动工程比较大。但换成Image后确实不会跳动
roger900909 2017-06-06
  • 打赏
  • 举报
回复
var transform = group.Children[1] as TranslateTransform; var position = e.GetPosition(img); transform.X-= mouseXY.X- position.X; transform.Y -= mouseXY.Y - position.Y; 我用这样的方式移动还是会抖动
  • 打赏
  • 举报
回复
楼主试试下面的方法,thumb控件,自动支持拖动。 http://blog.csdn.net/libby1984/article/details/72870120 我不明白的是楼主的代码中,为什么移动了图片后还要再移动Canvas。图片本来就是在Canvas里面。
xuggzu 2017-06-06
  • 打赏
  • 举报
回复
wpf下移动图片一般用visual或直接画,就算用自带的image,用楼主的方法也没见过类似帧数太低闪烁问题。所以只能怀疑楼主用的imageedit自身问题。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧