gpt4 book ai didi

Silverlight CliptoBound 属性问题

转载 作者:行者123 更新时间:2023-11-30 23:53:00 25 4
gpt4 key购买 nike

我正在开发 Silverlight 应用程序,我的问题是这样的:我有一个 WrapPanel和内部 WrapPanel我正在添加一些图像。然后,我旋转这些图像
90 度或 -90 度。

因此,如果我的图像大小是 200 x 250,当我旋转它时,它将超出 WrapPanel由 50 像素。有没有办法将此图像剪辑到 WrapPanel 的实际边界?

最佳答案

在我看来,您正在使用 RenderTransform 来旋转图像。问题是在分配了图像的大小和位置之后应用了变换,因此旋转的图像超出了其原始矩形。

一种解决方案是使用 LayoutTransfomer改为实现该转换。这会导致 WrapPanel 重新排列元素,甚至将图像移动到下一行。为简单起见,这是一个使用矩形的示例:-

    <ScrollViewer HorizontalScrollBarVisibility="Disabled">
<ItemsControl ItemsSource="{StaticResource TestData}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<toolkit:LayoutTransformer RenderTransformOrigin="0.5, 0.5" Margin="5">
<toolkit:LayoutTransformer.LayoutTransform >
<RotateTransform Angle="0" />
</toolkit:LayoutTransformer.LayoutTransform>
<Rectangle Width="100" Height="150" Fill="Blue" MouseLeftButtonUp="Rectangle_MouseLeftButtonUp" />
</toolkit:LayoutTransformer>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>

我添加了代码隐藏:-
    private void Rectangle_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
LayoutTransformer lt = ((FrameworkElement)sender).Parent as LayoutTransformer;
RotateTransform rt = (RotateTransform)lt.LayoutTransform;
rt.Angle += 90;
lt.ApplyLayoutTransform();
}

我的 TestData项目来源是任意的 List<T> , 列表中的内容并不重要,只是它包含一些项目。

使用 ScrollViewer 作为动态剪切区域

请注意,将 WrapPanel 放在 ScrollViewer 中是正常的。它自然地剪辑其内容anywar。

也许您确实想要剪辑 WrapPanel 并且您不想要任何滚动。显然你可以申请 RectangleGeometry它的 Clip属性,但您必须确保剪辑矩形始终与 WrapPanel 的实际大小匹配.你可以通过监控它的 SizeChanged 来做到这一点。事件并使用一些代码。

另一种方法是将其放入 ScrollViewer然后禁用两个滚动条。

关于Silverlight CliptoBound 属性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5017945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com