トップ回答者
Content や Text 文字列を縦書きにするには

質問
-
お世話になります。
Windows 8.1 Pro, Visual Studio 2013 Express, C# + XAML でWindowsストアアプリを作成しています。
スクリーンキーボードは、テンキーだけの表示に切り替える事ができなのいで、特定のキーだけが配置されたユーザーテンプレートを作成して対応しようとしています。
ユーザーテンプレートには、Button を配置し、Contentはそれぞれ、0~9、BackSpace、Delete、Enter などを設定しています。
この Content の内容を「縦書き」にする方法をご存知ないでしょうか?
Button の代わりに TextBlock でもよいのですが、その場合、Text の文字列を「縦書き」にする方法を知りたいです。
試しに以下のように書いてみると、回転するだけで「縦書き」にはなりません。<Button Height="100" Width="80">
<TextBlock Text="次へ" >
<TextBlock.RenderTransform>
<RotateTransform Angle="270"/>
</TextBlock.RenderTransform>
</TextBlock>
</Button>縦書きは、そう簡単にはできないのでしょうか。どなたか方法をご存知の方、教えて頂けないでしょうか。
よろしくお願いいたします。
- 編集済み JOSIE39 2014年3月5日 9:16
回答
-
簡単なのは、1文字ごとに改行することです。
<Button Height="100" Width="80"> <TextBlock>次<LineBreak />へ</TextBlock> </Button>
参考までに記しておきますと、Windows ストアアプリでまともな縦書きを実装するのは大変です。
やさしいのは、WebView を使い、 CSS で縦書きを指定する方法。
次は、1つの TextBlock に 1文字を表示することにして、TextBlock を C# のコードで縦に配置する方法。 http://blogs.msdn.com/b/ttanaka/archive/2013/04/15/windows-vol-4.aspx
最後に、 高速ですが手間が掛かる DirectWrite を使う方法。 http://code.msdn.microsoft.com/windowsapps/DWriteVerticalHelloWorld-eaab446f (C++/CX です。 SharpDX を使えば C# でもコーディング可能ですが、一度 C++/CX で書けるようになってからじゃないと難しいでしょう)
※ ルビを振るとなると、 いずれの方法でもさらに苦難の道です。biac [ http://bluewatersoft.cocolog-nifty.com/ ]
すべての返信
-
簡単なのは、1文字ごとに改行することです。
<Button Height="100" Width="80"> <TextBlock>次<LineBreak />へ</TextBlock> </Button>
参考までに記しておきますと、Windows ストアアプリでまともな縦書きを実装するのは大変です。
やさしいのは、WebView を使い、 CSS で縦書きを指定する方法。
次は、1つの TextBlock に 1文字を表示することにして、TextBlock を C# のコードで縦に配置する方法。 http://blogs.msdn.com/b/ttanaka/archive/2013/04/15/windows-vol-4.aspx
最後に、 高速ですが手間が掛かる DirectWrite を使う方法。 http://code.msdn.microsoft.com/windowsapps/DWriteVerticalHelloWorld-eaab446f (C++/CX です。 SharpDX を使えば C# でもコーディング可能ですが、一度 C++/CX で書けるようになってからじゃないと難しいでしょう)
※ ルビを振るとなると、 いずれの方法でもさらに苦難の道です。biac [ http://bluewatersoft.cocolog-nifty.com/ ]