Windows Phone 8 でカスタム シェイプのクリップ マスクを作成しようとしています。
シェイプのパス データがあるので、設定できます
<Grid x:Name="gridMain" Clip="M2,54.597 L100.15,101.27 .....
</Grid>
グリッドはカスタム パスに正しくクリップされます。
次に必要だったのは、変換を適用して、移動したり、スケーリングしたりできるようにすることです..
私は通常、次のようにコードでこれを行います
// slide transform
TranslateTransform translateTransform = new TranslateTransform();
gridMain.Clip.Transform = translateTransform;
そして、絵コンテを使って動きを行います。
ただし、問題は gridMain.Clip.Transform が RenderTransform ではないため、アニメーションが実行されないことです。エラーはありません。アニメーションはありません。
カスタム シェイプが EllipseGeometry のような組み込みのジオメトリである場合、XAML で変換を設定し、clipRT を使用してコードでアニメーション化できます。
<Grid x:Name="gridMain" Grid.Row="1" >
<Grid.Clip>
<GeometryGroup x:Name="clipGroup">
<EllipseGeometry RadiusX="100" RadiusY="100"/>
<GeometryGroup.Transform>
<CompositeTransform x:Name="clipRT" />
</GeometryGroup.Transform>
</GeometryGroup>
</Grid.Clip>
</Grid>
PathGeometry があることは知っていますが、パス データ M2,54.597 L100.15,101.27 ..... をパス マークアップとして取りません。私のカスタム形状には適していないものを設定する必要があります。
では、結論として。(パス データから) カスタム シェイプをセットアップして、クリッピング マスクを実行し、変換/スケーリングなどを実行できるようにするにはどうすればよいですか? コードから変換しますか?
注:私は画像をクリッピングしており、パスを定義して画像を塗りつぶすことができることを知っていますが、画像の周りにパスを移動するとパスが続くため、ここではうまくいきません。