问题描述
最近做的一个项目,遇到这样一个问题:在InkCanvas上画墨迹和添加richtextbox,richtextbox和墨迹可以作为被拖放对象放到其他的InkCanvas上去,这里要求,在移动墨迹和richtextbox的过程中,选中时,选中部分要形成图片,拖放的时候图片随着鼠标移动而移动。部分代码如下:BitmapSourcebs=StrokeToImage.FrameworkElementToBitmapSource(newPoint((int)inkBounds.TopLeft.X,(int)inkBounds.TopLeft.Y),inkCanvas,inkBounds);//选中对象转换为图片strokeToImage=newStrokeToImage(e.GetPosition(null),inkBounds,bs);图片信息描绘到Border,添加到父元素中//DataObjectdataObject=newDataObject("InkCanvas",inkCanvas);DragDrop.DoDragDrop(strokeToImage,dataObject,DragDropEffects.Copy);//注册拖放这里有一个问题,当注册拖放后,形成的图片就不随着鼠标移动而移动,若不注册拖放,则图片随鼠标移动而移动移动式在inkCanvas的mousemove事件中触发,代码如下:Vectorv=DragEndPoint-DragSatrtPoint;//鼠标移动信息strokeToImage.TopLeft=newPoint(strokeToImage.TopLeft.X+v.X,strokeToImage.TopLeft.Y+v.Y);}//图片左上角坐标DragSatrtPoint=DragEndPoint;
解决方案
解决方案二:
WPF中拖放的实时显示一般都是靠装饰层来实现的