2013-07-31 20 views
6

私は(私はちょうど画像を使用することができます実現が、私はWPFを学ぶしようとしています)WPFでこれを作成しようとしています:WPFのTextBlockオーバーラップ楕円

http://www.iconarchive.com/show/ios7-icons-by-visualpharm/info-icon.html

これは私がこれまで持っているものです、

<StackPanel> 
    <TextBlock HorizontalAlignment="Left" Margin="144,207,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top"/> 
    <Ellipse HorizontalAlignment="Left" Height="52" Margin="142,189,0,0" Stroke="Black" VerticalAlignment="Top" Width="52"/> 
</StackPanel> 

答えて

16

あなたは簡単にスケーリングするためにビューボックスに、このようなものを置くことができます:それはそれで、望ましい結果を生成するのではなく、テキストボックスには、それは単に透明な背景を持つべきであるのに対し、完全に楕円を隠すようですこのようなもの。スタックパネルを取り外す必要があります。スタックパネルは、アイテムを重ねてスタックします。これは、あなたがここにいるものではありません。私はこの場合グリッドを使用しました。

<Viewbox Width="100" Height="100"> 
    <Grid Width="20" Height="20"> 
     <Ellipse Stroke="Black"/> 
     <TextBlock HorizontalAlignment="Center" Text="i" TextAlignment="Center" VerticalAlignment="Center"/> 
    </Grid> 
</Viewbox> 

enter image description here

+0

ニース、まさに私がやろうとしていたもの。 – user1477388

2

このためのStackPanelを使用しないでください、それの目的は、物事をスタックすることで、彼らはあなたがそのために間違ったツールを使用している、重なって表示されません。グリッドを使用すると、実行しようとしているものにはるかに適しています。

背景が透明になるようにするには、TextBlockのBackground propertyを透過に設定するか、null背景を設定する必要があります。

Background={x:Null} 
5

したがって、スタックパネルは最初の項目を上に、2番目の項目を下に、3番目を2番目の項目の下に配置します。キャンバスやグリッドを使うことができます。スタックパネルと同様に、それらは「コンテンツコントロール」であり、スタックパネルで行ったように複数のオブジェクトを配置することをサポートします。

だから、あなたが達成しようとしている何をすべきか、本当に簡単な方法は、次のようになります。

<Grid > 
     <Ellipse HorizontalAlignment="Left" Height="52" Stroke="Black" VerticalAlignment="Top" Width="52"/> 
     <TextBlock Text="i" FontSize="52" Margin="18,-13,-6,13" /> 
</Grid> 
6

それとも、Unicode文字を使用することができます

コード0x24D8

<TextBlock Text="ⓘ" FontSize="52" /> 
+0

これは興味深い答えです。この作業はすべてのマシンで行われますか?これは特定のフォントですか、それとも私が気にするべきことですか? – user1477388

+1

これは標準のUnicodeであり、(WPFを実行できる)すべてのマシンで動作するはずですが、特殊なフォントを使用するときはテストする必要があります。 –

+0

これは彼が求めていることとは関係がなく、WPF(コントロールとレイアウトを理解しようとしています)を学びたいと思っています。 –