รูปภาพ Zoom_In & Zoom_Out บนผืนผ้าใบด้วยความช่วยเหลือของเมาส์ใน UWP Appliction

ฉันใช้โค้ดต่อไปนี้เพื่อลากและวางรูปภาพบนผืนผ้าใบ และด้วยความช่วยเหลือของการซูมแบบหยิก ฉันสามารถซูมรูปภาพบนแท็บด้วยการสัมผัส แต่ฉันอยากทำแบบเดียวกันบนเดสก์ท็อปด้วยความช่วยเหลือของเมาส์ เป็นไปได้ไหม. ฉันใหม่ในการเขียนโปรแกรม 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;

person vikas sharawat    schedule 21.06.2016    source แหล่งที่มา


คำตอบ (1)


ใช่มันเป็นไปได้

เพิ่ม 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;

                    }           
   }

ลงทะเบียนสำหรับ 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;


            }
        }
person Archana    schedule 21.06.2016
comment
ท่านที่รัก มันจะแก้ปัญหาครึ่งหนึ่งของฉันด้วยภาพของฉันซูมออกแต่ไม่ได้ซูมเข้า - person vikas sharawat; 21.06.2016
comment
เป็นไปได้ไหมเมื่อเลื่อนเมาส์ ฉันสามารถซูมออกและซูมภาพเข้าได้ - person vikas sharawat; 21.06.2016