[英]Zoom_In & Zoom_Out Images on canvas with the help of mouse in UWP Appliction
I have Use the following code to drag & Drop the Images on Canvas and with the help of pinch zoom i am able to zoom my images on the tabs with touch. 我已经使用以下代码将图像拖放到Canvas上,并且在捏缩放的帮助下,我可以通过触摸在选项卡上缩放图像。 but i want to do same on the desktop with the help of mouse.
但是我想借助鼠标在桌面上做同样的事情。 Is it possible.
可能吗。 I am new in UWP programming so please help me.
我是UWP编程的新手,请帮助我。
void Drag_ManipulationDelta1(object sender, ManipulationDeltaRoutedEventArgs e)
{
// Move the rectangle.
//dragTranslation.X += e.Delta.Translation.X;
//dragTranslation.Y += e.Delta.Translation.Y;
TextBlock text = sender as TextBlock;
CompositeTransform ct1 = text.RenderTransform as CompositeTransform;
ct1.ScaleX *= e.Delta.Scale;
ct1.ScaleY *= e.Delta.Scale;
if (ct1.ScaleX < 1.0) ct1.ScaleX = 1.0;
if (ct1.ScaleY < 1.0) ct1.ScaleY = 1.0;
if (ct1.ScaleX > 4.0) ct1.ScaleX = 4.0;
if (ct1.ScaleY > 4.0) ct1.ScaleY = 4.0;
//Checking with canvas boundary so that image wont go behind canvas
if ((ct1.TranslateX + e.Delta.Translation.X) <= (my_canvas.ActualWidth - text.ActualWidth) && ct1.TranslateX + e.Delta.Translation.X >= 0)
ct1.TranslateX += e.Delta.Translation.X;
if ((ct1.TranslateY + e.Delta.Translation.Y) <= (my_canvas.ActualHeight - text.ActualHeight) && ct1.TranslateY + e.Delta.Translation.Y >= 0)
ct1.TranslateY += e.Delta.Translation.Y;
if ((ct1.TranslateX + e.Delta.Translation.X) <= (my_canvas.ActualWidth - text.MinWidth) && ct1.TranslateX + e.Delta.Translation.X >= 1150)
ct1.TranslateX -= e.Delta.Translation.X;
if ((ct1.TranslateY + e.Delta.Translation.Y) <= (my_canvas.ActualHeight - text.MinHeight) && ct1.TranslateY + e.Delta.Translation.Y >= 500)
ct1.TranslateY -= e.Delta.Translation.Y;
}
// DRag and drop the images on canvas
imageitem.ManipulationMode = ManipulationModes.All;
imageitem.ManipulationDelta += Drag_ManipulationDelta;
CompositeTransform ct = new CompositeTransform();
imageitem.RenderTransform = ct;
Yes its possible 是的,有可能
Add Doubletapped
event to image; 向图像添加
Doubletapped
事件;
bool isZoomed = false;
private void image_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
{
Image img = sender as Image;
CompositeTransform ct = img.RenderTransform as CompositeTransform;
if (!isZoomed)
{
ct.ScaleX = 4.0;
ct.ScaleY = 4.0;
isZoomed = true;
}
else
{
ct.ScaleX = 1.0;
ct.ScaleY =1.0;
isZoomed = false;
}
}
Register for PointerWheelChanged event
and you can change scaleTHreshold
value 注册
PointerWheelChanged event
,您可以更改scaleTHreshold
值
double scalevalue = 0.0;
double scaleTHreshold = 4.0;
private void image_PointerWheelChanged(object sender, PointerRoutedEventArgs e)
{
Image img = sender as Image;
CompositeTransform ct = img.RenderTransform as CompositeTransform;
if (!isZoomed && scalevalue<=scaleTHreshold)
{
ct.ScaleX = ++scalevalue;
ct.ScaleY = scalevalue;
if(scalevalue==scaleTHreshold)
isZoomed = true;
}
else
{
if (--scalevalue == 0.0)
{
isZoomed = false;
return;
}
ct.ScaleX = scalevalue;
ct.ScaleY = scalevalue;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.