在WPF中复制9片功能
我真的很喜欢Flash/Flex中的9片功能。这是一个伟大的快速方法,使液体矢量布局。看看: 我正在使用AI文件中的选定对象设置9层网格(我没有使用9层来缩放角!)。我只希望正确的部分保持静止,其余部分保持比例。现在,还要注意,它必须缩放,所以它必须是向量。我无法将我要重复的部分平铺为光栅化图形 所以Flex很容易,WPF不太容易。我向WPF社区提出的问题是,如何在WPF中复制9片?我曾经尝试过用AI->XAML导出器导出这些。将路径对象嵌入网格行的行为太奇怪和不一致 这是采用导出的路径并尝试将其放入网格中。我应该注意到这个网格不是用来模拟9片的。我只是用它来布局对象。我只是希望下面的路径适合最右上角。它甚至不这样做在WPF中复制9片功能,wpf,xaml,Wpf,Xaml,我真的很喜欢Flash/Flex中的9片功能。这是一个伟大的快速方法,使液体矢量布局。看看: 我正在使用AI文件中的选定对象设置9层网格(我没有使用9层来缩放角!)。我只希望正确的部分保持静止,其余部分保持比例。现在,还要注意,它必须缩放,所以它必须是向量。我无法将我要重复的部分平铺为光栅化图形 所以Flex很容易,WPF不太容易。我向WPF社区提出的问题是,如何在WPF中复制9片?我曾经尝试过用AI->XAML导出器导出这些。将路径对象嵌入网格行的行为太奇怪和不一致 这是采用导出的路径并尝试
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid ShowGridLines="True">
<Path Fill="Red" Data="F1 M 200.0,42.5 L -200.0,42.5 L -200.0,-42.5 L 200.0,-42.5 L 200.0,42.5 Z" Grid.Row="0" Grid.Column="1"/>
</Grid>
</Page>
你有6片,不是9片 根据我有限的理解,9-slice基本上建立了一个3x3网格,其中四个角不缩放,中心顶部和底部单元格仅水平缩放,左侧和右侧中心单元格仅垂直缩放,中心水平和垂直缩放 下面的代码就是这样做的。不管它是否和9-slice完全一样,我不能告诉你,因为我从来没有真正使用过它
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="50" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="*" />
<RowDefinition Height="50" />
</Grid.RowDefinitions>
您的路径包含负坐标,当您在点(-200,0)处绘制某个对象时,它将在其应位于的位置左侧绘制200个像素 通过简单地向所有X坐标添加200,使您的路径基于(0,0)而不是(-200,0),您将获得此路径:
<Path Fill="Red" Data="F1 M 400.0,42.5 L 0.0,42.5 L 0.0,-42.5 L 400.0,-42.5 L 400.0,42.5 Z" Grid.Row="0" Grid.Column="1"/>
或者,您可以使用变换将其推入到位,这也将起作用:
<Path Fill="Red" Data="F1 M 200.0,42.5 L -200.0,42.5 L -200.0,-42.5 L 200.0,-42.5 L 200.0,42.5 Z" Grid.Row="0" Grid.Column="1">
<Path.RenderTransform>
<TranslateTransform X="200"/>
</Path.RenderTransform>
</Path>