2009-08-26 11 views
0

私は時計のようなグラフィカルな「ダイヤル」を作​​成するアプリケーションを作成しています。ダイヤルの各要素が作成され、時計回りにダイヤルに追加されます。分のストローク、数字「1」や他の装飾を含む1時間の要素を作成し、 2などWPF 2DグラフィックスとC言語の 'グループ'変換

ダイヤルの各要素の描画角度と位置を再計算するのではなく、ダイヤル要素の配置/回転の場所によって、各要素のすべての線、ティック、テキストなどを作成できますかグラフィカルな「グループ」として作成し、このグループ全体を回転変換しますか?

ありがとうございました。

答えて

1

はい。グリッドを使用して、そのグリッドのすべての他のオブジェクトやコントロールを配置し、グリッドのビュー変換を指定して、それを何度も回転させます。

つまり、グリッド上のすべてを45度に変換するには、XAMLでは次のようになります。

<Grid x:Name="LayoutRoot" RenderTransformOrigin="0.5,0.5"> 
     <Grid.RenderTransform> 
      <TransformGroup> 
       <ScaleTransform/> 
       <SkewTransform/> 
       <RotateTransform Angle="45"/> 
       <TranslateTransform/> 
      </TransformGroup> 
     </Grid.RenderTransform> 
     <Rectangle Fill="White" Stroke="Black" Margin="198,161,265,196"/> 
    </Grid> 

この例では、ガードには1つの矩形しかありませんが、含まれるオブジェクトの数に関係なく概念はまったく同じです。 90度のグリッドを回転させるであろう、あなたがして、次の使用できるのC#による回転後者を調整する

RotateTransform aRT = new RotateTransform(90); 
this.LayoutRoot.RenderTransform = aRT; 
+0

こんにちは、返信用のおかげで、あなたはさらに助けることができますか? 私はダイヤルの要素の数が可変なので、これをC#ですべて行う方法を知りたいと思います。 新しい要素ごとに新しいグリッドを作成してから、それを作成するごとに変換する必要がありますか? また、ダイヤルはユーザーが編集することができます。ユーザーは新しい要素を追加したり削除したりすることができ、ダイヤルを変更するたびに再描画する必要があります。 .. – Will

+0

- 動的に新しいグリッドを作成する - グラフィックスを追加する - それを描画して、ダイヤル全体を再描画することができます ダイヤルにはいくつの要素があるかわからないので、実行時にユーザーによって作成されますが、名前付き変数を持つグリッドを作成することはできませんが、グリッドに名前が付けられていない場合、後でどのように削除しますか? ありがとうございます。 – Will

関連する問題