vb.net - How to smoothly drag an image box in WPF? -


i'm working wpf 4 , vb.net 2010. project consists of full-screen windows 640x480 grid in center.

in project, want have various image boxes (which have item .png images in them), user can drag around , drop in various places on grid.

in essence, need able make possible item clicked , dragged around grid, image box still visible , same size user moves around. should never able leave grid. need able determine if object on object, when mouse button released, dragged object "dropped", , triggers particular block of code.

how do this?

something similar 'project', using c#

from http://pastie.org/1498237

// xaml  <window x:class="myproject.window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" title="window1" height="500" width="500">     <grid>         <canvas x:name="mycanv">             <image width="150" x:name="myimg" source="some_source.png"/>         </canvas>     </grid> </window>  //c#  private point mouseclick; private double canvasleft; private double canvastop; public window1() {     initializecomponent();     foreach (object obj in mycanv.children)     {         try         {             image img = (image)obj;             img.previewmousedown += new mousebuttoneventhandler(myimg_mousedown);             img.previewmousemove += new mouseeventhandler(myimg_mousemove);             img.previewmouseup += new mousebuttoneventhandler(myimg_mouseup);             img.textinput += new textcompositioneventhandler(myimg_textinput);             img.lostmousecapture += new mouseeventhandler(myimg_lostmousecapture);             img.setvalue(canvas.leftproperty, 0.0);             img.setvalue(canvas.topproperty, 0.0);         }         catch         {             //do         }     } }  void myimg_lostmousecapture(object sender, mouseeventargs e) {     ((image)sender).releasemousecapture(); }  void myimg_textinput(object sender, textcompositioneventargs e) {     ((image)sender).releasemousecapture(); }  void myimg_mouseup(object sender, mousebuttoneventargs e) {     ((image)sender).releasemousecapture(); }  void myimg_mousemove(object sender, mouseeventargs e) {     if (((image)sender).ismousecaptured)     {         point mousecurrent = e.getposition(null);         double left = mousecurrent.x - canvasleft;         double top = mousecurrent.y - canvastop;         ((image)sender).setvalue(canvas.leftproperty, canvasleft + left);         ((image)sender).setvalue(canvas.topproperty, canvastop + top);         canvasleft = canvas.getleft(((image)sender));         canvastop = canvas.gettop(((image)sender));     } }  void myimg_mousedown(object sender, mousebuttoneventargs e) {     mouseclick = e.getposition(null);     canvasleft = canvas.getleft(((image)sender));     canvastop = canvas.gettop(((image)sender));     ((image)sender).capturemouse(); } 

Comments

Popular posts from this blog

java - SNMP4J General Variable Binding Error -

windows - Python Service Installation - "Could not find PythonClass entry" -

Determine if a XmlNode is empty or null in C#? -