- 題名: プログレスバー上にテキストを表示
- 日時: 2011/10/24 16:58:00
- ID: 29290
- この記事の返信元: - (なし)
 
- この記事への返信: - [29292] Re[1]: プログレスバー上にテキストを表示2011/10/24 21:00:51
 
- ツリーを表示
こんなんでどう?
文字列描画部分は希望にあわせて修正してください。
Public Class ProgressText
    Inherits ProgressBar
    Public Sub New()
        MyBase.new()
        SetStyle(ControlStyles.UserPaint, True)
        SetStyle(ControlStyles.AllPaintingInWmPaint, True)
        SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
    End Sub
    Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
        MyBase.OnPaint(e)
        Dim grp = e.Graphics()
        Dim rect1 = Me.ClientRectangle
        Dim rect2 As New Rectangle(rect1.X + 3, _
            rect1.Y + 3, CInt((rect1.Width - 6) * Value / Maximum), rect1.Height - 6)
        ProgressBarRenderer.DrawHorizontalBar(grp, rect1)
        ProgressBarRenderer.DrawHorizontalChunks(grp, rect2)
        grp.DrawString("あああああ", Me.Font, Brushes.White, rect1, New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
    End Sub
End Class
分類:[.NET]
Windows フォームのプログレスバー上にテキストを表示したいと試行錯誤しています。
ラベルをプログレスバーに Controls.Add してみましたが、ラベルの背景が透過されませんでした。
プログレスバーに Graphics.DrawString も試しましたが再描画が多いため点滅したようになってしまします。
良い方法がありましたらよろしくお願いします。