C#WPF – 拖动图像

C#WPF – 拖动图像,第1张

概述我试图获得一些简单的功能,从文件中获取图像,将其添加到Canvas,然后允许用户左键单击(并保持)图像,然后将其拖动到Canvas(即更新图像的地点) 这是我到目前为止,我应该添加什么? private void btnAddImage_Click(object sender, RoutedEventArgs e) { try { System.Windows.Forms. 我试图获得一些简单的功能,从文件中获取图像,将其添加到Canvas,然后允许用户左键单击(并保持)图像,然后将其拖动到Canvas(即更新图像的地点)

这是我到目前为止,我应该添加什么?

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 – 拖动图像所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1223774.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存