質問

WPFカスタムコントロールの世界に飛び込んで、HexGridコントロールを設計する最良の方法は何だろうと思っていましたか?お気に入りの卓上戦争ゲームを考えてください。または、同様に、卓上戦争ゲームの誇り高い歴史からデザインを盗むお気に入りのビデオゲーム。

基礎となるモデルは、Mapクラスの一部として1つの重要なメソッドを公開します:

Hex GetHex(int x, int y, int z)*;

Hexには、関連するすべてのデータが含まれています(現時点では、背景色に1:1でマッピングされる地形の列挙。小さな開始...)。

関連する可能性のある制約:
マップのサイズは変わりません& 16進データは非常に予測可能な時間に変更されます(常にユーザーのアクションに直接応答します)。

理想的には、コンポーネントはコンテナをきれいに拡張してXAMLで直接宣言できます。

探しているのは、既製のコンポーネントではなく、これを構築するために必要なことの大まかな概要です。

*私はこのアドレッシング方式にかなり賢いのですが、どうやら lateですパーティーへ

役に立ちましたか?

解決

編集:ここに、16進グリッドのサンプルがあるPeteのプロジェクトページへのリンクがあります。 http://blois.us/Projects.html Hex Gridを持ち、おそらく掃海艇と同じ基本コードを使用するpathfindingと呼ばれるプロジェクトを示すpathfindingサンプルがあります。私はまだ見ていません。これはSilverlight 3であるため、アップグレードする必要がある場合があります。掃海艇はかなりエレガントでした。

ラルフ

オリジナル: 掃海艇の六角形バージョンのピーターブロワによるsilverlight 2のサンプルがありました。

ソースコードが含まれていました。彼は、グリッド上のmeasureoverrideとArrangeoverrideをオーバーライドすることで、非常にエレガントな方法でそれを行いました。マウスオーバーなどはうまくいきました。著しく少ないコードがありました。

ウェブ上でプロジェクトを見つけることができませんが、googleには六角形の掃海艇silverlightソースコードブロアを検索することで古いリンクがあります

Peter Bloisの現在のブログは以下のアドレスにあるため、ここで彼に連絡してみてください。 http://blois.us/Projects.html

幸運とそれがどうなるか教えてください、私は似たようなものになります。

他のヒント

WPFでの私の意見では、HexGridをUserControlとしてではなく、 Panel として設計する方が合理的です。パネルには視覚的な表現はなく、子要素を適切に配置するだけです(HexGridの場合-ハニカムパターン)。これらの子要素は、六角形にする必要があります。

概念の証明:私のHexGridプロジェクト(ここに投稿するには大きすぎます)

CodeProjectの記事

GitHubリポジトリ

HexList :HexGridパネルのHexItemコンテナーにアイテムを表示するセレクターItemsControl

HexGrid :ハニカム要素に子要素を配置するパネル

HexItem :六角形のContentControl

宣言的な使用例:

<hx:HexList Name="HexColors" Orientation="Vertical"
            Grid.Row="1"
            Padding="10"
            SelectedIndex="0"
            Background="{Binding Path=SelectedItem.Background, RelativeSource={RelativeSource Self}}"
            RowCount="5" ColumnCount="5">
    <hx:HexItem Grid.Row="0" Grid.Column="1" Background="#006699"/>
    <hx:HexItem Grid.Row="0" Grid.Column="2" Background="#0033CC"/>
    <hx:HexItem Grid.Row="0" Grid.Column="3" Background="#3333FF"/>
    <!--...-->
    <hx:HexItem Grid.Row="4" Grid.Column="1" Background="#CC9900"/>
    <hx:HexItem Grid.Row="4" Grid.Column="2" Background="#FF3300"/>
    <hx:HexItem Grid.Row="4" Grid.Column="3" Background="#CC0000"/>
</hx:HexList>

 hex color selector

質問は古いものであると理解していますが、万が一に備えて解決策を共有します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top