如何阻止Grid子元素在Grid.RenderTransform上调整大小

时间:2019-04-09 13:20:27

标签: c# xaml uwp grid rendertransform

好的,所以我有一个Grid,有4个孩子Images,每个孩子都位于Grid的所有四个角。 Grid with Children

底部两个子Images的目的是拉伸网格。因此,当用户拖动这些角时,Grid将伸展。

我的问题是孩子们也会伸展,这是我不想要的。

Stretched Grid

有什么方法可以确保孩子的身材不会随Grid伸展吗?

谢谢。

P.S。我可以将Images子项与Grid分离,但是这种方式更加简单和优雅,因为x / y位置完美地保持在Grid的边缘,我只想确保他们尽可能不Scale

创建网格并添加子级

//ImageGrid
ImageControl.Height = 500;
ImageControl.Width = 500;
ImageControl.ManipulationMode = ManipulationModes.All;

canvas.Children.Add(ImageControl);

ImageControl.Children.Add(tickBtn);
ImageControl.Children.Add(delBtn);
ImageControl.Children.Add(skewBtn);
ImageControl.Children.Add(strBtn);

ImageManipulation.Image_Drag = new CompositeTransform();
ImageManipulation.Image_Drag.CenterX = imW / 2;
ImageManipulation.Image_Drag.CenterY = imH / 2;

ImageControl.RenderTransform = ImageManipulation.Image_Drag;
strBtn.ManipulationDelta += ImageManipulation.resBtn_Manip;
skewBtn.ManipulationDelta += MaskManipulation.skewBtn_Manip;
dragControl.ManipulationDelta += ImageManipulation.movBtn_Manip;

操作类

public static CompositeTransform Image_Drag;

public static void resBtn_Manip(object sender, ManipulationDeltaRoutedEventArgs e) 
{

    Mask_Drag.ScaleX += e.Delta.Translation.X;
    Mask_Drag.ScaleY += e.Delta.Translation.X;
}

public static void movBtn_Manip(object sender, ManipulationDeltaRoutedEventArgs e) 
{
    Mask_Drag.TranslateX += e.Delta.Translation.X;
    Mask_Drag.TranslateY += e.Delta.Translation.Y;
}

public static void skewBtn_Manip(object sender, ManipulationDeltaRoutedEventArgs e) 
{

    Mask_Drag.ScaleX -= e.Delta.Translation.X;
    Mask_Drag.ScaleY += e.Delta.Translation.Y;

    if (Mask_Drag.ScaleX < 0.5)

    {
        Mask_Drag.ScaleX = 0.5;
    }

    if (Mask_Drag.ScaleY < 0.5) 

    {
        Mask_Drag.ScaleY = 0.5;
    }
}

0 个答案:

没有答案