积极答复者
怎么在WP7中实现图片的移动,放大,缩小???

问题
-
像win7下的图片浏览器一样···可以捕捉鼠标位置来实现图片的放大和缩小。 我找了好久,没找到··很多都是WPF上的··我不怎么会WPF··所以移植不过来。 自己写的代码,用鼠标滑轮来控制图片的大小,可是运行的时候没反映。 XAML的代码 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Image Name="img" Source="/MouseEven;component/IMG.jpg" Stretch="Fill" RenderTransformOrigin="0.5,0.5"> <Image.RenderTransform> <ScaleTransform x:Name="st"/> </Image.RenderTransform> </Image> </Grid> C#代码 private static double darger=1; private static double flag = 0.1; private void LayoutRoot_MouseWheel(object sender, MouseWheelEventArgs e) { if (e.Delta>0) { darger+=flag; } else { if (darger > flag) { darger -= flag; } } st.ScaleX = st.ScaleY = darger; } 高手们··麻烦指点下··谢谢了··我新手··刚刚接触,不知道哪错了··
答案
-
您可以参考多“MultiTouch Behavior for Windows Phone”的例子,其实现了通过多点触控对于图片放大、缩小和旋转控制。
MultiTouch Behavior for Windows Phone在CodePlex的下载地址: http://multitouch.codeplex.com/
包含了Silverlight / Windows Phone 7 behaviors and WPF 4 samples ,您只要研究WP7Only.sln里实现的方法即可。因为在手机上使用的话,最终所有的操作还是通过手势控制,所以您掌握MultiTouch Behavior for Windows Phone是非常有用的。
Cedar- 已标记为答案 盒子配角 2011年4月21日 4:27
全部回复
-
您可以参考多“MultiTouch Behavior for Windows Phone”的例子,其实现了通过多点触控对于图片放大、缩小和旋转控制。
MultiTouch Behavior for Windows Phone在CodePlex的下载地址: http://multitouch.codeplex.com/
包含了Silverlight / Windows Phone 7 behaviors and WPF 4 samples ,您只要研究WP7Only.sln里实现的方法即可。因为在手机上使用的话,最终所有的操作还是通过手势控制,所以您掌握MultiTouch Behavior for Windows Phone是非常有用的。
Cedar- 已标记为答案 盒子配角 2011年4月21日 4:27
-
噢·谢谢了···那个我看过了。。不过那个和我们老师给我的任务有点区别。
老师给的任务是在WP7下实现图片的放大缩小 。像window7下的图片浏览器一样,捕捉鼠标的位置,从而放大一个区域。
我查看了很多文档,也写了代码。
void LayoutRoot_onMouseWheel(object sender, MouseWheelEventArgs e)
{
if (e.Delta > 0)
{
darger += flag;
}
else
{
if (darger > flag)
{
darger -= flag;
}
}
st.ScaleX = st.ScaleY = darger;
}这代码·在silvelight中就可以实现图片的放大缩小。但是换到WP7里就不行了。好像是没有焦点。
在WP7下 MouseLeftButtonDown MouseMove等等这些鼠标事件都可以实现图片的状态改变。
只有MouseWheel不行,运行的时候,在图片上滚动滑轮没有反映。
求助。。
-
鼠标指针悬停在 UIElement 上时或 UIElement 具有焦点时,用户滚动鼠标滚轮。
XAML
<uiElement MouseWheel="eventhandler"/>s
MouseWheel 和 OnMouseWheel
继承 MouseWheel 的控件可以通过重写 OnMouseWheel 方法来处理充当所有实例的处理程序的事件。这可能包括将事件的 Handled 值标记为 true,这一标记将导致取消进一步处理针对控件的任意实例(有时可能是控件的任意子类)的 MouseWheel 事件。
还可以注册处理程序,以便即使是针对已处理的路由事件,也会调用这些处理程序。有关更多信息,请参见 AddHandler。
Control.OnMouseWheel 方法
在 MouseWheel 事件发生之前调用,用于在不附加委托的情况下为派生类中的事件提供处理。
在调用 MouseWheel 事件的任何事件处理程序之前调用 OnMouseWheel 方法。此方法启用派生类来处理 MouseWheel 事件,且不附加委托。这是在派生类中处理事件的首选技术。
protected virtual void OnMouseWheel(
MouseWheelEventArgs e
)
Cedar -
我现在写的事件可拖放Image··
····用鼠标的左键点击下去的时候捕获鼠标位置
··在鼠标移动的时候改变Image的坐标
松开鼠标的时候放弃捕获鼠标位置
当我点图片并拖放的时候,焦点这个时候在Image上吧·但是这个时候滚动滑轮··还是木响应。。。。
··
·····问了一些人说 WP7的是内核是windows CE```windows CE支持的鼠标是那种最基本的鼠标,只有左右键的,如果有第三个按键,就要有一个驱动程
序。··但是WP7没有也不会有一个外设的滑轮。所以微软就没有写鼠标滑轮的驱动程序。。。。版主··是这样吗???
····唉不整了··转战多点触控·····毕竟最后还是要转到多点触控上的···谢谢版主了·······
-
·····问了一些人说 WP7的是内核是windows CE```windows CE支持的鼠标是那种最基本的鼠标,只有左右键的,如果有第三个按键,就要有一个驱动程
序。··但是WP7没有也不会有一个外设的滑轮。所以微软就没有写鼠标滑轮的驱动程序。。。。版主··是这样吗???
····唉不整了··转战多点触控·····毕竟最后还是要转到多点触控上的···谢谢版主了·······
您上面提到的内容超出了我的知识范围,请高手为我们指点迷津吧。从msdn提供的资料(http://msdn.microsoft.com/zh-cn/library/system.windows.controls.control.onmousewheel(v=VS.95).aspx)来看,Windows Phone是支持MouseWheel事件的(http://msdn.microsoft.com/zh-cn/library/system.windows.uielement.mousewheel(v=VS.95).aspx)。
我尝试了一下,也没有成功。使用UIElement.AddHandler 方法也没有成功。因为AddHandler中没有MouseWheel事件。
要使用 AddHandler,路由事件必须公开作为事件标识符的公共静态字段,这是 routedEvent 参数所必需的。这只对 Silverlight 核心类中的有限事件集成立。
Cedar