Вопрос: Сложный вопрос (для посетителей форума, но не д...
Добавлено: 15.03.03 02:01
Автор вопроса: Zeus | Web-сайт:apirussia.by.ru | ICQ: 161801353
Думаю, многие уже устанавливали себе новый 9-ый Windows Media Player. И те, кто установил, наверное видели, что там есть такая настройка, как "плавное" изменение цвета программы. Типа такая полоса прокрутки с градиентом всех цветов, и, перемещая ползунок, меняется цвет программы.
Отсюда у меня и вопрос: как сделать зависимость какой-либо переменной (отвечающей за цвет) от положения ползунка. Т.е. если ползунок стоит на ярко-(тёмно-)синем, так пусть переменной будет присвоено значение ярко-(тёмно-)синего цвета. Не делать же для каждого Value полосы прокрутки своё собственное значение переменной.
У меня есть несколько крутых функций, вырабатывающих различные цвета:
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