C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: ProgresBarの色を変更する(Visualスタイル)


(過去ログ 103 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■61610 / inTopicNo.1)  ProgresBarの色を変更する(Visualスタイル)
  
□投稿者/ JRY (15回)-(2011/08/22(Mon) 20:25:25)

分類:[VB.NET/VB2005 以降] 

ProgresBarの色を変更したいと思っています。
Visualスタイルの状態で、緑から、黄色や赤色に変換することはできますか?
参考画像↓
http://www.fastpic.jp/images/346/1654135489.png
(編集画像)
引用返信 編集キー/
■61611 / inTopicNo.2)  Re[1]: ProgresBarの色を変更する(Visualスタイル)
□投稿者/ shu (952回)-(2011/08/22(Mon) 23:37:01)
No61610 (JRY さん) に返信

アニメーションがなくなってしまいますが、
SetStyleして自分で描画

Imports System.Windows.Forms.VisualStyles
Imports System.Drawing.Imaging

Public Class ProgressColor
    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(ByVal e As System.Windows.Forms.PaintEventArgs)
        Dim g = e.Graphics
        Dim bmp = New Bitmap(Me.Width, Me.Height)
        Dim g2 = Graphics.FromImage(bmp)

        Dim rect1 = Me.DisplayRectangle
        Dim intH6 = rect1.Height \ 6
        Dim W1 = rect1.Width - 2
        Dim W2 = W1 * Value \ Me.Maximum
        Dim rect2 = New Rectangle(1, 1, W2, rect1.Height - 2)
        Dim rect4 = New Rectangle(0, 0, rect1.Width - 1, rect1.Height - 1)

        ProgressBarRenderer.DrawHorizontalBar(g2, rect1)
        ProgressBarRenderer.DrawHorizontalChunks(g2, rect2)

        Dim matrixElement As Single()() = _
                    {New Single() {1, 0, 0, 0, 0}, _
                     New Single() {1, 0, 0, 0, 0}, _
                     New Single() {0, 0, 1, 0, 0}, _
                     New Single() {0, 0, 0, 1, 0}, _
                     New Single() {0, 0, 0, 0, 1}}
        Dim matrix As ColorMatrix = New ColorMatrix(matrixElement)
        Dim attr As ImageAttributes = New ImageAttributes()
        attr.SetColorMatrix(matrix)
        g.DrawImage(bmp, _
                New Rectangle(0, 0, W2 + 1, rect1.Height), _
                0, 0, W2 + 1, rect1.Height, _
                GraphicsUnit.Pixel, _
                attr)
        g.DrawImage(bmp, _
                New Rectangle(W2 + 1, 0, W1 - W2 + 1, rect1.Height), _
                W2 + 1, 0, W1 - W2 + 1, rect1.Height, _
                GraphicsUnit.Pixel)

        g2.Dispose()
        bmp.Dispose()
    End Sub
End Class

引用返信 編集キー/
■61612 / inTopicNo.3)  Re[2]: ProgresBarの色を変更する(Visualスタイル)
□投稿者/ れお (8回)-(2011/08/23(Tue) 00:48:57)
5回くらい、同じ質問をみたが。これがマルポ?
っか、オレが外人コードを丸投げしようとしたら、マルポは禁止とかでたが。

信長簡単バーを政策しますた。

Public Class Form1

Dim nobunagaBar As New PictureBox

Sub nobunagaBar_pt()
With nobunagaBar
.Location = New Point(100, 50)
.Size = New Size(150, 20)
.BackColor = Color.Black
End With
Me.Controls.Add(nobunagaBar)
AddHandler nobunagaBar.Paint, AddressOf nobunagaBar_paint
End Sub

Dim mouthLabel As New Label

Sub mouthLabel_pt()
With mouthLabel
.Location = New Point(0, 0)
.AutoSize = True
.Font = New Font("ms uigothic", 30)
.Text = CStr(mouth_counter)
End With
Me.Controls.Add(mouthLabel)
End Sub

Sub nobunagaBar_paint(ByVal sender As Object, ByVal e As PaintEventArgs)
Dim g As Graphics = e.Graphics
g.FillRectangle(Brushes.Blue, 0, 0, mini_counter, 20)
End Sub

Dim mini_counter As Integer = 1
Dim mouth_counter As Integer = 1

WithEvents NewTimer As New Timer With {
.Interval = 10,
.Enabled = True
}

Private Sub NewTimer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles NewTimer.Tick
mini_counter += 1 : If mini_counter = nobunagaBar.Width Then
mini_counter = 1 : mouth_counter += 1 : If mouth_counter = 13 Then mouth_counter = 1
End If
mouthLabel.Text = mouth_counter & "" & "月"
nobunagaBar.Invalidate()
End Sub

Public Sub New()

InitializeComponent()

nobunagaBar_pt()
mouthLabel_pt()

Me.StartPosition = FormStartPosition.CenterScreen
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedToolWindow
Me.BackColor = Color.SkyBlue
Me.Text = "卍 織田信長 Σ"
Me.Size = New Size(300, 300)

End Sub

End Class

引用返信 編集キー/
■61638 / inTopicNo.4)  Re[3]: ProgresBarの色を変更する(Visualスタイル)
□投稿者/ れお (9回)-(2011/08/24(Wed) 19:06:58)
No61612 (れお さん) に返信
> 5回くらい、同じ質問をみたが。これがマルポ?
> っか、反映してんのかね?
っか、5回質問しても、やはり未解決君なのか。とゆう感じはするね。

プログレスバー=ピクチャーボックス+タイマー+プログラム

プログレスバーの方程式だがな。C++だろうがC#だろうが、原理は同じ。

花柄(スミレ柄とかカーネーション柄)のバーも簡単に作成できるのだ。
当然、7色レインボーバーも簡単にできる。

オレのコードを、よく観察、白。

以上。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -