ProgressBar и прозрачность....

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Mix
Новичок
Новичок
Аватара пользователя
 
Сообщения: 26
Зарегистрирован: 01.11.2004 (Пн) 19:04
Откуда: Россия, Новокузнецк

ProgressBar и прозрачность....

Сообщение Mix » 13.03.2009 (Пт) 16:36

Такая проблема. ProgressBar отображает процесс конвертирования некоторого кол-ва файлов. На нём стоит Label и показывает сколько файлов из скольки конвертнулось (например, "20 из 56"). Проблема в том, что фон у Label не получается сделать прозрачным.
Ни через .BackColor = Color.Transparent, ни через .Parent=ProgressBar....Даже через Me.TransparencyKey пробовал...

Изображение

Может быть есть какой-то другой способ нанести текст с прозрачным фоном на ProgressBar (только чтобы текст обновлять можно было бы) ?
Клан -=S.A.L.K.E.R.=-
"И я говорю - мы победим, господь нас уважает!!!" (c) DDT

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: ProgressBar и прозрачность....

Сообщение MIT » 13.03.2009 (Пт) 16:47

[на вскидку]
1)Унаследовать прогресс бар и в событии OnPaint дорисовывать то что тебе нужно.
2)Сделать свой лейбел, который не будет рисовать фон.
Первый способ проще, но я не говорю о том, что он самый простой - просто первая мысль...
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: ProgressBar и прозрачность....

Сообщение 1Steps » 14.03.2009 (Сб) 1:54

Mix писал(а):нанести текст с прозрачным фоном
Это как?
Проблема в том, что фон у Label не получается сделать прозрачным.
А зачем? Один из способов, смотри ниже.
Код: Выделить всё
Public Class Form1
    Private Sub UpdatePercentage()
        Dim x As Single
        Dim y As Single
        Dim percentage As String = CType((ProgressBar1.Value / ProgressBar1.Maximum * 100), Integer).ToString & "%"
        Dim gr As Graphics = Me.ProgressBar1.CreateGraphics
        Dim sz As SizeF = gr.MeasureString(percentage, Me.ProgressBar1.Font, Me.ProgressBar1.Width)
        x = (Me.ProgressBar1.Width / 2) - (sz.Width / 2)
        y = (Me.ProgressBar1.Height / 2) - (sz.Height / 2)
        gr.DrawString(percentage, Me.ProgressBar1.Font, Brushes.Black, x, y)
        gr.Dispose()
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Me.ProgressBar1.PerformStep()
        Me.UpdatePercentage()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If Me.Timer1.Enabled Then
            Me.Timer1.Enabled = False
        Else
            Me.Timer1.Enabled = True
        End If
    End Sub
End Class
Удалена за ненадобностью.

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: ProgressBar и прозрачность....

Сообщение Williams » 14.03.2009 (Сб) 13:08

Label прозрачен относительно своего родительского контрола.
На codeproject был прогрессбар с поддержкой прозрачности
И вы думаете, что вас оставят в живых после прочтения этого поста?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: ProgressBar и прозрачность....

Сообщение MIT » 14.03.2009 (Сб) 14:04

Но, имхо, создать свой класс было бы логичнее: приделать прогрессбару 2 свойства: ShowText и Textmask (с параметром на подобие "Выполнено: {perc}% ({pos} из {max})"), и дописать свой код для рисования. Просто, универсально и правильно.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: ProgressBar и прозрачность....

Сообщение 1Steps » 14.03.2009 (Сб) 20:40

Mit писал(а):Но, имхо, создать свой класс было бы логичнее
Правильно.

Но вопрос стоял так
Может быть есть какой-то другой способ нанести текст с прозрачным фоном на ProgressBar (только чтобы текст обновлять можно было бы) ?
Удалена за ненадобностью.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: ProgressBar и прозрачность....

Сообщение MIT » 14.03.2009 (Сб) 20:46

1Steps писал(а):Но вопрос стоял так
Может быть есть какой-то другой способ нанести текст с прозрачным фоном на ProgressBar (только чтобы текст обновлять можно было бы) ?
Дык я и предложил способ нанести любой текст с любой прозрачностью, да к тому же с автоматическим обновлением при движении прогрессбара :wink:
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 63

    TopList