
这是我到目前为止,我应该添加什么?
private voID btnAddImage_Click(object sender,RoutedEventArgs e) { try { System.windows.Forms.OpenfileDialog open = new System.windows.Forms.OpenfileDialog(); open.Filter = "Image files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp"; if (open.ShowDialog() == System.windows.Forms.DialogResult.OK) { PictureBox PictureBox1 = new PictureBox(); PictureBox1.Image = new Bitmap(open.filename); myCanvas.children.add(PictureBox1); } } catch (Exception) { throw new ApplicationException("Failed loading image"); }}解决方法 您可以向Canvas添加一个 Image控件,并在鼠标输入上修改其left和top属性. XAML:
<GrID> <GrID.RowDeFinitions> <RowDeFinition/> <RowDeFinition Height="auto"/> </GrID.RowDeFinitions> <Canvas x:name="canvas" MouseleftbuttonDown="CanvasMouseleftbuttonDown" MouseleftbuttonUp="CanvasMouseleftbuttonUp" MouseMove="CanvasMouseMove"/> <button GrID.Row="1" Content="Add Image" Click="AddbuttonClick"/></GrID>
代码背后:
private voID AddbuttonClick(object sender,RoutedEventArgs e){ var dialog = new Microsoft.Win32.OpenfileDialog(); dialog.Filter = "Image files (*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp"; if ((bool)dialog.ShowDialog()) { var bitmap = new BitmAPImage(new Uri(dialog.filename)); var image = new Image { Source = bitmap }; Canvas.Setleft(image,0); Canvas.Settop(image,0); canvas.Children.Add(image); }}private Image draggedImage;private Point mouseposition;private voID CanvasMouseleftbuttonDown(object sender,MousebuttonEventArgs e){ var image = e.source as Image; if (image != null && canvas.CaptureMouse()) { mouseposition = e.Getposition(canvas); draggedImage = image; Panel.SetZIndex(draggedImage,1); // in case of multiple images }}private voID CanvasMouseleftbuttonUp(object sender,MousebuttonEventArgs e){ if (draggedImage != null) { canvas.ReleaseMouseCapture(); Panel.SetZIndex(draggedImage,0); draggedImage = null; }}private voID CanvasMouseMove(object sender,MouseEventArgs e){ if (draggedImage != null) { var position = e.Getposition(canvas); var offset = position - mouseposition; mouseposition = position; Canvas.Setleft(draggedImage,Canvas.Getleft(draggedImage) + offset.X); Canvas.Settop(draggedImage,Canvas.Gettop(draggedImage) + offset.Y); }} 总结 以上是内存溢出为你收集整理的C#WPF – 拖动图像全部内容,希望文章能够帮你解决C#WPF – 拖动图像所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)