ローマ数字を縦書き印字するには


谷 華子  2007-12-08 13:25:47  No: 144157  IP: 192.*.*.*

vb2005でprintdocumentで印字プログラムを作成しています。
「Ⅳ  以  上」という文字を縦書き印刷したいのですが
  Dim V_FontH2 As New Font("MS ゴシック", 8, FontStyle.Regular)
  Dim V_SF As New StringFormat()
    EG.DrawString("Ⅳ  以  上", V_FontH2, Brushes.Black, 100, 100 , V_SF)
としたのですが「Ⅳ」の文字だけ右に90度の状態で印字されてしまいます。
フォントを@MS ゴシックにかえてもかわりませんでした。
誰か助けてください。

編集 削除
花ちゃん  2007-12-09 17:59:56  No: 144158  IP: 192.*.*.*

>フォントを@MS ゴシックにかえてもかわりませんでした。
>誰か助けてください。

縦書きフォント自体がサポートされていないようなので、Win32 API 関数の
CreateFont を使って縦書きフォントを270度回転させて表示すれば一応
表示させる事は可能です。
又は、1文字づつ位置を設定して表示するかですね。

リッチテキストボックスでは縦書きフォントを表示させる事はできるようですが
プロパティの設定で出てくるフォントのダイアログでは、縦書きフォント
が表示されませんね。

編集 削除
谷 華子  2007-12-10 11:47:12  No: 144159  IP: 192.*.*.*

>縦書きフォント自体がサポートされていないようなので、Win32 API 関数の
>CreateFont を使って縦書きフォントを270度回転させて表示すれば一応
>表示させる事は可能です。
使い方がまったくわかりません。
サンプルコードをいただけたら助かります。

編集 削除
谷 華子  2007-12-10 17:44:12  No: 144160  IP: 192.*.*.*

Dim V_FontH2 As New Font("MS ゴシック", 8, FontStyle.Regular)
  Dim V_SF As New StringFormat()
  V_SF.FormatFlags = StringFormatFlags.DirectionVertical
    Dim EG As Graphics = e.Graphics
    Dim FontHandle As Long
    FontHandle = CreateFont(0, 0, 2700, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, "@MS ゴシック")

  EG.DrawString("Ⅳ  以  上", どうすればよかとね, Brushes.Black, 100, 100 , V_SF)

としたのですが
  1:PInvokeStackImbalance が検出されました。とメッセージがでます。
  2:CreateFontで作成したフォントをどうやってDrawStringのフォントに
      変換する方法がわかりません。

編集 削除