none
Content や Text 文字列を縦書きにするには RRS feed

  • 質問

  • お世話になります。

    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
    2014年3月5日 7:12

回答

  • 簡単なのは、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/ ]

    • 回答の候補に設定 星 睦美 2014年3月6日 1:55
    • 回答としてマーク JOSIE39 2014年3月6日 1:56
    2014年3月5日 9:22

すべての返信

  • 簡単なのは、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/ ]

    • 回答の候補に設定 星 睦美 2014年3月6日 1:55
    • 回答としてマーク JOSIE39 2014年3月6日 1:56
    2014年3月5日 9:22
  • ブルーウォーターソフト様

    いつも助けて頂いて、ありがとうございます!

    「Windowsストアアプリでまともな縦書きの実装は大変」という事なのですね。
    URL をありがとうございます。参考になりました&今後も参考にさせて頂きます。

    既存の業務アプリのタブレット対応のための調査作業なので、教えて頂いた事から、ちょっとUIを見直す方向で提案してみます。

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

    2014年3月6日 2:14