8

非常に特殊なタイプのアイテムを作成するカスタム パネルまたはコントロールを作成したいと考えています。

基本的に、目的は、オブジェクトのリストを与えることができるコントロールを持つことであり、それらのオブジェクトのそれぞれをボタンに配置します。ポイントは、ボタンをドー​​ナツのように円形に配置することです。下の画像に似ています。

ドーナツチャート

しかし、できれば、これらの色付きのセクションのそれぞれがボタンだったと想像してみてください。マウスオーバーやイベントなど、ボタンのすべての機能も備えています。

したがって、問題の矢面に立ったのは、この種のコントロールを作成するには、どのような手法を検討する必要があるかということです。ボタンである種の「曲率」変換を行う方法はありますか?

ここでは、2 つの別々のものを探しているように見えますね。

つまり、リスト内の各項目を、ItemTemplate としてボタンを持つ ItemsControl に入れることができます。したがって、必要なのは次の2つだけです。

そのうちの最初のものは放射状のレイアウト パネルです (私はそれらのいくつかを見てきました)。

2 つ目は、各ボタンにある種の回転と曲率変換を持たせる方法です。

何か案は?

4

2 に答える 2

4

3つの異なるステップを見ていると思います:

  1. 円のPanel周りに子を配置する 。重要なことに、パネルは、子に関連付けられた読み取り専用の依存関係プロパティを更新して、それらが配置された場所 (度単位の開始位置と度単位の終了位置) を伝える必要があります。
  2. Buttonいくつかの開始位置と終了位置に従って円弧状にレンダリングされるテンプレート。
  3. 2 つを組み合わせて、ボタンの開始位置と終了位置を、パネルによって公開されたアタッチされた値にバインドします。
于 2010-11-25T08:24:09.807 に答える
0

私たちが抱えていた同じ問題を解決するための別のアプローチ (似ていますが) は、パネルを使用して各「ボタン」を互いの上に積み重ねることです。各ボタンは、内側と外側の 2 つの仮想円の計算に基づいて成形されています。次に、元の位置がドーナツの中心点になるように、x、y 座標によって正しい位置にオフセットされます。最も難しい部分は明らかに、これらすべての三角法計算を実行することですが、一度実行すると、好きなように形状を回転、扇形、拡大などするのは簡単です。

于 2011-03-08T04:19:40.373 に答える