タイトル | : Re^2: タブを左にすると文字が表示されない |
記事No | : 4618 |
投稿日 | : 2006/12/04(Mon) 05:38 |
投稿者 | : 魔界の仮面弁士 |
とりあえず、プロジェクトのプロパティで、 "Windows アプリケーション フレームワーク プロパティ" - [XP Visual スタイルを有効にする] のチェックを外せば、横方向タブも使用できます。
XP Visual スタイルを有効設定のままにしておきたいのであれば、オーナードローという手も ありますが、Lunaモードが「上タブ」しか対応していない以上、見た目上はどうしても Classicスタイルになってしまうかと思います。
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load TabControl1.Alignment = TabAlignment.Left
'オーナードローモードを使用 TabControl1.DrawMode = TabDrawMode.OwnerDrawFixed 'ページ部分のVisualStyleを無効化 For Each page As TabPage In TabControl1.TabPages page.UseVisualStyleBackColor = False Next End Sub
'タブ部分のオーナードロー処理。 Private Sub TabControl1_DrawItem(ByVal sender As Object, ByVal e As DrawItemEventArgs) Handles TabControl1.DrawItem Dim tab As TabControl = DirectCast(sender, TabControl) Dim page As TabPage = tab.TabPages(e.Index) Dim g As Graphics = e.Graphics
'背景塗りつぶし Using backBrush As New SolidBrush(page.BackColor) g.FillRectangle(backBrush, e.Bounds) End Using
'文字を回転させて描画 Using foreBrush As New SolidBrush(page.ForeColor), _ sf As New StringFormat(StringFormat.GenericDefault) sf.Alignment = StringAlignment.Center sf.LineAlignment = StringAlignment.Center g.TranslateTransform(e.Bounds.X + e.Bounds.Width \ 2, e.Bounds.Y + e.Bounds.Height \ 2) Select Case tab.Alignment Case TabAlignment.Left g.RotateTransform(-90.0F) Case TabAlignment.Right g.RotateTransform(90.0F) Case Else 'Top/Bottomは無回転 End Select g.DrawString(page.Text, e.Font, foreBrush, 0, 0, sf) End Using End Sub
なお、左右のタブで文字を±90°回転させたくない場合には、Graphics.RotateTransform を 使うのではなく、StringFormatFlags.DirectionVertical を用いて縦書きすると良いかも。
|