Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 9

ScrollBar + RBG

05.03.2017, 19:02. Показов 5557. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, нужна помощь.
Есть ScrollBar, нужно чтобы при прокрутке, менялись все 16777216 цветов на форме. Пробовал тремя циклами, прога зависает. Через рандомайз не подойдет. Цвета должны идти так:
0 0 0
0 0 1
...
0 0 256
0 1 0
...
256 256 255
256 256 256
Я сделал значение RBG(x, y, z) для x и z:
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.ScrollBar1Change(Sender: TObject);
var
  p, i, j, k, j1, k1: integer;
begin
  p := ScrollBar1.Position;
  k1 := p div 256;
 
  i := p div 65536;
  k := p - k1 * 256;
  Form1.Color := RGB(i, j, k);
end;
Но для y не получается. И так у меня для x и z?
Помогите пожалуйста.

Добавлено через 18 минут
Опечатка, там RGB.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.03.2017, 19:02
Ответы с готовыми решениями:

Работа со ScrollBar
Помогите пожалуйста. У меня есть форма и менюшка по нажатию на менюшку я рисую на canvas формы. Как сделать такое когда рисунок заходит за...

полоса прокрутки Scrollbar
Необходимо чтобы с помощью полосы прокрутки scrollbar изменялось числовое значение над ней, с помощью полосы прокрутки.от 1 секунды до 1000...

ScrollBar, изменить размер бегунка
Всем привет вопрос когда я изменяю max у ScrollBar то его бегунок не меняется(не растягивается и не сжимается). как это исправит...

15
5951 / 4527 / 1094
Регистрация: 29.08.2013
Сообщений: 28,115
Записей в блоге: 3
05.03.2017, 19:34
Цитата Сообщение от Svadq Посмотреть сообщение
Form1.Color := RGB(i, j, k);
а что такое j?
0
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 9
05.03.2017, 19:42  [ТС]
Ну я написал там RGB(x, y, z), y - это j. Я не знаю общей формулы нахождения его.
0
5951 / 4527 / 1094
Регистрация: 29.08.2013
Сообщений: 28,115
Записей в блоге: 3
05.03.2017, 20:30
у тебя переменная j нигде не задается
0
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 9
05.03.2017, 20:40  [ТС]
В том и вопрос, что я не знаю как для j указать формулу, для i и k есть, но для j не знаю (не знаю для i и k правильно или нет). Вообще это я показал, что я сделал, если можно по другому скролом 16777216 цветов формы сделать, то напишите пожалуйста.
0
5951 / 4527 / 1094
Регистрация: 29.08.2013
Сообщений: 28,115
Записей в блоге: 3
05.03.2017, 21:16
можно руками посчитать
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  case strtoint(edit4.text) of
  0..256:begin
           Edit1.Text:='0';
           Edit2.Text:='0';
           Edit3.Text:=Edit4.Text;
         end;
  257..65536:begin
           Edit1.Text:='0';
           Edit2.Text:=inttostr( StrToInt(Edit4.Text) div 256 );
           Edit3.Text:=inttostr( StrToInt(Edit4.Text) - StrToInt(Edit2.Text) - 255 );
         end;
  65537..16777216:begin
           Edit1.Text:=inttostr( StrToInt(Edit4.Text) div 256 );
// а дальше сам
         end;
а можно использовать GetBValue, GetGValue, GetRValue
это функции который из LongInt берут соответствующее значение
0
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 9
05.03.2017, 21:31  [ТС]
Не могу понять, зачем Edit'ы, если нужно при прокрутке одного ScrollBar'а менять цвет формы.
0
5951 / 4527 / 1094
Регистрация: 29.08.2013
Сообщений: 28,115
Записей в блоге: 3
05.03.2017, 21:52
это я себе делал, не обращай внимание
0
240 / 218 / 46
Регистрация: 17.04.2010
Сообщений: 526
06.03.2017, 09:14
Цитата Сообщение от Svadq Посмотреть сообщение
0 0 0
0 0 1
...
0 0 256
0 1 0
...
256 256 255
256 256 256
Во-первых это обычный инкремент, во-вторых RGB значения лежат в диапазоне 0..255

Delphi
1
2
3
4
5
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
  Color:=ScrollBar1.Position;
  Caption:=Format('R=%d G=%d B=%d',[GetRValue(Color), GetGValue(Color), GetBValue(Color)]);
end;
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
06.03.2017, 13:00
Цитата Сообщение от Svadq Посмотреть сообщение
Есть ScrollBar, нужно чтобы при прокрутке, менялись все 16777216 цветов на форме. Пробовал тремя циклами,
бред. для использования процедуры RGB нужно взять три ScrollBar, каждый для отдельного цвета, и повесить один обработчик на все три бара

Добавлено через 1 минуту
и опять 25.

ты куда будешь выводить эти 16777216 строк?

Добавлено через 29 секунд
или их выводить не нужно?
0
07.03.2017, 08:17

Не по теме:

Можно и одним, число от #000000 до #FFFFFF и просто засовывать в переменную, но будет корявенько.

0
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 9
07.03.2017, 11:11  [ТС]
Нужно одним скроллом.
Типа этого:
Delphi
1
2
3
4
for i := 0 to 255 do
  for j := 0 to 255 do
    for k := 0 to 255 do
      Form1.Color := RGB(i, j, k);
Только программа виснет. Есть другой способ так реализовать?
0
240 / 218 / 46
Регистрация: 17.04.2010
Сообщений: 526
07.03.2017, 11:33
Лучший ответ Сообщение было отмечено Svadq как решение

Решение

Svadq, ты же получил ответ... Для особо одаренных повторюсь, твоя конструкция с циклами сводится к обычному инкременту:
Delphi
1
2
3
4
var
  c: TColor;
...
  for c:=0 to $ffffff do Form.Color:=c;
т.е. все, сто тебе нужно сделать, это задать Min и Max для ScrollBar и в OnChange задавать значение цвета из Position

Delphi
1
2
3
4
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
  Color:=ScrollBar1.Position;
end;
просто скоппасти этот код и все будет работать как ты ожидаешь....
1
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 9
07.03.2017, 18:46  [ТС]
Спасибо!
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
08.03.2017, 02:37
Цитата Сообщение от Svadq Посмотреть сообщение
Только программа виснет. Есть другой способ так реализовать?
ну нельзя, нельзя ТРОЙНОЙ цикл пихать в подобные конструкции
Название: i.jpg
Просмотров: 111

Размер: 10.0 Кб
ты хоть немного представляешь, что происходит при каждом изменении ползунка скроллбара?
при КАЖДОМ измении ползунка программа пытается сделать 16777216 итераций цикла (в общей сумме трех циклов)
а ты, бл..., удивляешься, чего это она виснет!!!

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

изначально в корне неверная постановка задачи (если она вообще есть)
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
08.03.2017, 02:46

Не по теме:

делать мне вот нечего в 2 ночи....



задача решается просто
Delphi
1
2
3
4
5
6
7
procedure TForm3.ScrollBarsChange(Sender: TObject);
begin
  Label1.Caption:= IntToStr(RedBar.Position);
  Label2.Caption:= IntToStr(GreenBar.Position);
  Label3.Caption:= IntToStr(BlueBar.Position);
  Color:= RGB(RedBar.Position,GreenBar.Position,BlueBar.Position);
end;
процедура вешается на все три скролл бара
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.03.2017, 02:46
Помогаю со студенческими работами здесь

Переключения цветов шрифта на панели с использованием ScrollBar
Подскажите пожалуйста как с помощью ScrollBar'а сделать переключения цветов шрифта на панели?

Scrollbar в DBGrid
Почему Scrollbar у DBDrid такой "косячный", т.е. если я в начале списка - ползунок в самом верху, если я пролистываю дальше - ползунок...

Scrollbar
Здравствуйте. Можно ли сделать так, чтобы при перемещении ползунка scrollbar в одну сторону, строки в listbox пропадали, а при перемещении...

Memo и ScrollBar
Подскажите как можно прикрутить Скролбар к мемо, чтобы при прокрутки Скрола Мемо листался вниз ?

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru