Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Сложный вопрос (для посетителей форума, но не д... Добавлено: 15.03.03 02:01  

Автор вопроса:  Zeus | Web-сайт: apirussia.by.ru | ICQ: 161801353 

Думаю, многие уже устанавливали себе новый 9-ый Windows Media Player. И те, кто установил, наверное видели, что там есть такая настройка, как "плавное" изменение цвета программы. Типа такая полоса прокрутки с градиентом всех цветов, и, перемещая ползунок, меняется цвет программы.

Отсюда у меня и вопрос: как сделать зависимость какой-либо переменной (отвечающей за цвет) от положения ползунка. Т.е. если ползунок стоит на ярко-(тёмно-)синем, так пусть переменной будет присвоено значение ярко-(тёмно-)синего цвета. Не делать же для каждого Value полосы прокрутки своё собственное значение переменной.

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 msv



Вопросов: 34
Ответов: 312
 Web-сайт: msvprogs.narod.ru
 Профиль | | #1
Добавлено: 15.03.03 07:17

Прибавляй цвет по RGB (R,G,B). Например сдвинулось на 1 - прибавляй к счетчику синего или зеленого или красного 1 или более IMHO.

Ответить

Номер ответа: 2
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #2
Добавлено: 15.03.03 17:42

Есть конверто встроенный в ВБ он называется RGB и берёт три Integral (цифры) значения от 0 до 255.

Используется так RGB (R, G, B)

R- Red - красный
G - Green - Зелённый
B - Blue - Голубой

Вот и оно возврошает значение ф формате 256 Color - Можно и HUE установить, но если те нужно не 256 а 24 Бита иль пр. то используй HUE От 1 до 256

ПОКА!!!

Пащёл печатать...

Ответить

Номер ответа: 3
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #3 Добавлено: 16.03.03 14:04

У меня есть несколько крутых функций, вырабатывающих различные цвета:

Type RGBSB
 cR As Byte
 cG As Byte
 cB As Byte
End Type


Function HueSinRGB(ByVal Hue&;) As Long
Select Case Hue Mod 1620
Case 0 To 269
    HueSinRGB = DRGB(255, SinToRGB(Cos(DegToRad(Hue / 3 * 2))), 0)
Case 270 To 539
    HueSinRGB = DRGB(255 - SinToRGB(Cos(DegToRad((Hue - 270) / 3 * 2))), 255, 0)
Case 540 To 809
    HueSinRGB = DRGB(0, 255, SinToRGB(Cos(DegToRad((Hue - 540) / 3 * 2))))
Case 810 To 1079
    HueSinRGB = DRGB(0, 255 - SinToRGB(Cos(DegToRad((Hue - 810) / 3 * 2))), 255)
Case 1080 To 1349
    HueSinRGB = DRGB(SinToRGB(Cos(DegToRad((Hue - 1080) / 3 * 2))), 0, 255)
Case 1350 To 1619
    HueSinRGB = DRGB(255, 0, 255 - SinToRGB(Cos(DegToRad((Hue - 1350) / 3 * 2))))
End Select
End Function

Private Function SinToRGB(Sinus!) As Long
SinToRGB = (255 - Int(Sinus * 255)) / 2
End Function

Function AntiRGB(Vi As Long) As RGBSB
AntiRGB_A.cR = (Vi Mod 256)
AntiRGB_A.cG = (Vi Mod 65536) \ 256
AntiRGB_A.cB = (Vi Mod 16777216) \ 65536
End Function

Function DRGB(ByVal R&, ByVal G&, ByVal b&;) As Long
If R > 255 Then R = 255
If G > 255 Then G = 255
If b > 255 Then b = 255
If R < 0 Then R = 0
If G < 0 Then G = 0
If b < 0 Then b = 0
DRGB = R + G * 256 + b * 65536
End Function

Function SRGB(ByVal R&, ByVal G&, ByVal b&;) As Long
If R > 255 Then R = 0
If G > 255 Then G = 0
If b > 255 Then b = 0
If R < 0 Then R = 255
If G < 0 Then G = 255
If b < 0 Then b = 255
SRGB = R + G * 256 + b * 65536
End Function

Function BRGB(ByVal R&, ByVal G&, ByVal b&;) As Long
If R > 255 Then R = 255
If G > 255 Then G = 255
If b > 255 Then b = 255
If R < -255 Then R = -255
If G < -255 Then G = -255
If b < -255 Then b = -255
BRGB = R + G * 256 + b * 65536
End Function

Распространяются бесплатно. :)

Ответить

Номер ответа: 4
Автор ответа:
 Zeus



ICQ: 161801353 

Вопросов: 63
Ответов: 220
 Web-сайт: apirussia.by.ru
 Профиль | | #4
Добавлено: 18.03.03 21:48

Между прочим, про ргб каждый ламер знает, не надо меня так опускать! Ответили, блин.

Страшный сон, спасибо, я придумал решение этого вопроса (на основе твоего ответа). Оказывается, следовало не сам цвет менять, а оттенок(HUE).

Вот переделанный (чуууточку) программный код

предполагается наличие горизонтального скроллбара

 

 

Private Type RGBSB

cR As Byte

cG As Byte

cB As Byte

End Type

Function HueSinRGB(ByVal Hue&;) As Long

Select Case Hue Mod 1620

Case 0 To 269

HueSinRGB = DRGB(255, SinToRGB(Cos(DegToRad(Hue / 3 * 2))), 0)

Case 270 To 539

HueSinRGB = DRGB(255 - SinToRGB(Cos(DegToRad((Hue - 270) / 3 * 2))), 255, 0)

Case 540 To 809

HueSinRGB = DRGB(0, 255, SinToRGB(Cos(DegToRad((Hue - 540) / 3 * 2))))

Case 810 To 1079

HueSinRGB = DRGB(0, 255 - SinToRGB(Cos(DegToRad((Hue - 810) / 3 * 2))), 255)

Case 1080 To 1349

HueSinRGB = DRGB(SinToRGB(Cos(DegToRad((Hue - 1080) / 3 * 2))), 0, 255)

Case 1350 To 1619

HueSinRGB = DRGB(255, 0, 255 - SinToRGB(Cos(DegToRad((Hue - 1350) / 3 * 2))))

End Select

End Function

Private Function SinToRGB(Sinus!) As Long

SinToRGB = (255 - Int(Sinus * 255)) / 2

End Function

Private Function DegToRad(degrees As Long)

DegToRad = degrees * 3.14159265358979 / 180

End Function

Function DRGB(ByVal R&, ByVal G&, ByVal b&;) As Long

If R > 255 Then R = 255

If G > 255 Then G = 255

If b > 255 Then b = 255

If R < 0 Then R = 0

If G < 0 Then G = 0

If b < 0 Then b = 0

DRGB = R + G * 256 + b * 65536

End Function

Private Sub HScroll1_Change()

Me.BackColor = HueSinRGB(HScroll1.Value)

End Sub

Ответить

Номер ответа: 5
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #5 Добавлено: 19.03.03 14:27
Про DegToRad забыл - у меня она тоже есть.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам