2.ボタン等のテキストを影付き文字等色々なスタイルで表示(15_But_02) (旧、SampleNo.344) |
1.ボタン等のテキストを影付き文字等色々なスタイルで表示 2. 3. 4. 5. 6. 上記以外に、コントロール共通関係 のところやこれ以外のコントロールのところに書いてある場合もありますので、そちらの方もご覧ください。 |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :追加なし 参照設定:追加なし その他 : : このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.ボタン等のテキストを影付き文字等色々なスタイルで表示 |
Public Class Form1 #Region "本文関係の処理(Button_Click イベントの処理等)" Private Sub Button1_Paint(sender As Object, e As PaintEventArgs) Handles Button1.Paint 'Silver 色の文字の上に2Pixel ずらした、Black 色の文字を重ねて描画して影付き文字を作成 Button1.Text = "" Button1.Size = New Size(Label13.Width, CInt(Label13.Height * 1.75)) 'テキストをアンチエイリアス処理して表示(効果はあまり見られないが) e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias e.Graphics.DrawString("影付き文字", _ New Font("MS Pゴシック", 20, FontStyle.Bold), Brushes.Silver, fX + 1, fY + 1) e.Graphics.DrawString("影付き文字", _ New Font("MS Pゴシック", 20, FontStyle.Bold), Brushes.Black, fX - 1, fY - 1) End Sub Private Sub Button2_Paint(sender As Object, e As PaintEventArgs) Handles Button2.Paint 'GraphicsPath と DrawPath を使って中抜き文字を作成(文字内部は無色です。) Button2.Text = "" Button2.Size = New Size(Label13.Width, CInt(Label13.Height * 1.75)) Using gp As New System.Drawing.Drawing2D.GraphicsPath gp.AddString("中抜き文字", New FontFamily("MS Pゴシック"), FontStyle.Bold, fh, _ New Point(fX, fY), StringFormat.GenericDefault) 'テキストをアンチエイリアス処理して表示 e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias '文字の縁の部分を描画 e.Graphics.DrawPath(Pens.Red, gp) End Using End Sub Private Sub Button3_Paint(sender As Object, e As PaintEventArgs) Handles Button3.Paint '2Pixelづつずらして4個描画した上に、バックカラーで文字を描画して中抜き文字を作成(こちらの方が綺麗) Button3.Text = "" Button3.Size = New Size(Label13.Width, CInt(Label13.Height * 1.75)) 'テキストをアンチエイリアス処理して表示 e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias e.Graphics.DrawString("中抜き文字", New Font("MS Pゴシック", 20, FontStyle.Regular), _ New SolidBrush(Color.Red), fX, fY + 1) e.Graphics.DrawString("中抜き文字", New Font("MS Pゴシック", 20, FontStyle.Regular), _ New SolidBrush(Color.Red), fX, fY - 1) e.Graphics.DrawString("中抜き文字", New Font("MS Pゴシック", 20, FontStyle.Regular), _ New SolidBrush(Color.Red), fX + 1, fY) e.Graphics.DrawString("中抜き文字", New Font("MS Pゴシック", 20, FontStyle.Regular), _ New SolidBrush(Color.Red), fX - 1, fY) e.Graphics.DrawString("中抜き文字", New Font("MS Pゴシック", 20, FontStyle.Regular), _ New SolidBrush(Button3.BackColor), fX, fY) End Sub Private Sub Button4_Paint(sender As Object, e As PaintEventArgs) Handles Button4.Paint 'GraphicsPath と DrawPath を使って中抜き文字を作成し文字内部を赤色で塗潰して縁取り文字を作成 Button4.Text = "" Button4.Size = New Size(Label13.Width, CInt(Label13.Height * 1.75)) Using gp As New System.Drawing.Drawing2D.GraphicsPath 'テキストをアンチエイリアス処理して表示 e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias gp.AddString("縁取り文字", New FontFamily("MS Pゴシック"), FontStyle.Bold, fh, _ New Point(fX, fY), StringFormat.GenericDefault) e.Graphics.FillPath(Brushes.Red, gp) e.Graphics.DrawPath(Pens.Blue, gp) End Using End Sub Private Sub Button5_Paint(sender As Object, e As PaintEventArgs) Handles Button5.Paint '5個の文字を重ねて描画した中抜き文字と同じ手法で縁取り文字を作成(こちらの方が見た目が綺麗) Button5.Text = "" Button5.Size = New Size(Label13.Width, CInt(Label13.Height * 1.75)) 'テキストをアンチエイリアス処理して表示 e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias e.Graphics.DrawString("縁取り文字", New Font("MS Pゴシック", 20, FontStyle.Regular), _ New SolidBrush(Color.Blue), fX, fY + 1) e.Graphics.DrawString("縁取り文字", New Font("MS Pゴシック", 20, FontStyle.Regular), _ New SolidBrush(Color.Blue), fX, fY - 1) e.Graphics.DrawString("縁取り文字", New Font("MS Pゴシック", 20, FontStyle.Regular), _ New SolidBrush(Color.Blue), fX + 1, fY) e.Graphics.DrawString("縁取り文字", New Font("MS Pゴシック", 20, FontStyle.Regular), _ New SolidBrush(Color.Blue), fX - 1, fY) e.Graphics.DrawString("縁取り文字", New Font("MS Pゴシック", 20, FontStyle.Regular), _ New SolidBrush(Color.Red), fX, fY) End Sub Private Sub Button6_Paint(sender As Object, e As PaintEventArgs) Handles Button6.Paint '線形グラデーションをかけて文字を描画、影文字も線形グラデーションをかけて描画して影付き文字を作成 Button6.Text = "" Button6.Size = New Size(Label13.Width, CInt(Label13.Height * 1.75)) Using br1 As New System.Drawing.Drawing2D.LinearGradientBrush( _ Button2.ClientRectangle, Color.Yellow, Color.Black, _ System.Drawing.Drawing2D.LinearGradientMode.Horizontal) Using br2 As New System.Drawing.Drawing2D.LinearGradientBrush( _ Button6.ClientRectangle, Color.Blue, Color.Red, _ System.Drawing.Drawing2D.LinearGradientMode.Horizontal) 'テキストをアンチエイリアス処理して表示 e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias e.Graphics.DrawString("影付き文字", _ New Font("MS Pゴシック", 20, FontStyle.Bold), br1, fX + 2, fY + 2) e.Graphics.DrawString("影付き文字", _ New Font("MS Pゴシック", 20, FontStyle.Bold), br2, fX, fY) End Using End Using End Sub Private Sub Button7_Paint(sender As Object, e As PaintEventArgs) Handles Button7.Paint 'vb3DShadowとvb3DHighlightの2色使って凹み文字を作成(凹んだように見えるでしょうか?) Button7.Text = "" Button7.Size = New Size(Label13.Width, CInt(Label13.Height * 1.75)) 'テキストをアンチエイリアス処理して表示 e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias e.Graphics.DrawString("凹む文字?", New Font("MS Pゴシック", 20, FontStyle.Bold), _ New SolidBrush(ColorTranslator.FromWin32(-2147483628)), fX + 2, fY + 2) e.Graphics.DrawString("凹む文字?", New Font("MS Pゴシック", 20, FontStyle.Bold), _ New SolidBrush(ColorTranslator.FromWin32(-2147483632)), fX, fY) End Sub Private Sub Button8_Paint(sender As Object, e As PaintEventArgs) Handles Button8.Paint 'vb3DShadowとvb3DHighlightの2色使って凸む(つばく・む)文字を作成(凸む文字と呼ぶのが正しいかは?) Button8.Text = "" Button8.Size = New Size(Label13.Width, CInt(Label13.Height * 1.75)) 'テキストをアンチエイリアス処理して表示 e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias e.Graphics.DrawString("凸む文字?", New Font("MS Pゴシック", 20, FontStyle.Bold), _ New SolidBrush(ColorTranslator.FromWin32(-2147483632)), fX + 2, fY + 2) e.Graphics.DrawString("凸む文字?", New Font("MS Pゴシック", 20, FontStyle.Bold), _ New SolidBrush(ColorTranslator.FromWin32(-2147483628)), fX, fY) End Sub Private Sub Button9_Paint(sender As Object, e As PaintEventArgs) Handles Button9.Paint 'TextureBrush を使って画像で文字を描画 Button9.Text = "" Button9.Size = New Size(Label13.Width, CInt(Label13.Height * 1.75)) Using tbr As New TextureBrush(Image.FromFile("..\..\..\data_pic\test344.jpg")) 'テキストをアンチエイリアス処理して表示 e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias e.Graphics.DrawString("画像で文字", _ New Font("MS Pゴシック", 20, FontStyle.Bold), tbr, fX, fY) End Using End Sub Private Sub Button10_Paint(sender As Object, e As PaintEventArgs) Handles Button10.Paint 'HatchBrush 及び HatchStyle=Percent50 を使って文字を描画(フォントサイズが小さいと効果がでない) Button10.Text = "" Button10.Size = New Size(Label13.Width, CInt(Label13.Height * 1.75)) Dim hs As System.Drawing.Drawing2D.HatchStyle = Drawing2D.HatchStyle.Percent50 Using hbr As New System.Drawing.Drawing2D.HatchBrush(hs, Color.Red, Color.Blue) 'テキストをアンチエイリアス処理して表示 e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias e.Graphics.DrawString("ハッチ文字", _ New Font("MS Pゴシック", 20, FontStyle.Bold), hbr, fX, fY) End Using End Sub Private Sub Button11_Paint(sender As Object, e As PaintEventArgs) Handles Button11.Paint 'HatchBrush 及び HatchStyle=LightDownwardDiagonal を使って文字を描画し影を追加 Button11.Text = "" Button11.Size = New Size(Label13.Width, CInt(Label13.Height * 1.75)) Dim hs As System.Drawing.Drawing2D.HatchStyle = Drawing2D.HatchStyle.LightDownwardDiagonal 'テキストをアンチエイリアス処理して表示 e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias e.Graphics.DrawString("ハッチ+影", _ New Font("MS Pゴシック", 20, FontStyle.Bold), Brushes.Black, fX + 2, fY + 2) Using hbr As New System.Drawing.Drawing2D.HatchBrush(hs, Color.Yellow, Color.Red) e.Graphics.DrawString("ハッチ+影", _ New Font("MS Pゴシック", 20, FontStyle.Bold), hbr, fX, fY) End Using End Sub Private Sub Button12_Paint(sender As Object, e As PaintEventArgs) Handles Button12.Paint 'HatchBrush 及び HatchStyle=SmallCheckerBoard を使って文字を描画し縁を追加 Button12.Text = "" Button12.Size = New Size(Label13.Width, CInt(Label13.Height * 1.75)) Dim hs As System.Drawing.Drawing2D.HatchStyle = Drawing2D.HatchStyle.SmallCheckerBoard Using hbr As New System.Drawing.Drawing2D.HatchBrush(hs, Color.Yellow, Color.Red) Using gp As New System.Drawing.Drawing2D.GraphicsPath 'テキストをアンチエイリアス処理して表示 e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias gp.AddString("ハッチ+縁", New FontFamily("MS Pゴシック"), FontStyle.Bold, fh, _ New Point(fX, fY), StringFormat.GenericDefault) e.Graphics.FillPath(hbr, gp) e.Graphics.DrawPath(Pens.Blue, gp) End Using End Using End Sub #End Region #Region "起動時の処理(Form1_Load イベント等の処理" Private fh As Integer Private fX As Integer Private fY As Integer Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load fh = CInt(Label13.Height) fX = CInt(Label13.Height / 4) fY = CInt(Label13.Height / 2) - 2 Label13.Visible = False End Sub #End Region End Class 図1.上記実行図 |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
影付き文字の作成 中抜き文字(2種類) 縁取り文字(2種類) グラデーションで影付き文字 凹んだ形の文字 凸む(つばく・む)文字? 文字色に画像を使った文字 色々ハッチスタイルの文字 グラフィックスで文字を描画する コントロールの表面に文字を描画する |