Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2008, 20:39   #1
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию Color в цикле

Подскажите как засунуть в цикл for данные строки:
Код:
 with Image1.Canvas do begin

  Brush.Color:= ($000000);
  RectAngle(3,3,13,13);

  Brush.Color:= ($003300);
  RectAngle(15,3,25,13);

  Brush.Color:= ($006600);
  RectAngle(27,3,37,13);

  Brush.Color:= ($009900);
  RectAngle(39,3,49,13);

  Brush.Color:= ($00CC00);
  RectAngle(51,3,61,13);

  Brush.Color:= ($00FF00);
  RectAngle(63,3,73,13);
 end;
проблема в том, что не могу понять как увеличивать значение цвета в Brush.Color. В данном случае увеличивается зеленый цвет. Нужно еще и красный и синий.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 05.08.2008, 20:58   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Изменяй в цикле значения RGB составляющих и юзай функцию
Код:
function RGBToColor(R,G,B:Byte): TColor;  
begin  
       Result:=B Shl 16 Or 
       G Shl 8 Or 
       R; 
end;
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 05.08.2008, 23:51   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Есть стандартная функция RGB, пример использования:
Brush.Color:= RGB(255,0,0); //красный цвет
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 05.08.2008, 23:56   #4
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

справился немного по-другому.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  a, b, c : byte;
  i : integer;
begin
  a := ($00);
  b := ($33);
  c := ($00);
  for i := 0 to 5 do
    begin
     Inc(b, ($33));
     Canvas.Brush.Color:= RGB(a, b, c);
     Canvas.Rectangle(10, 10, 200, 200);
     Sleep(1000);
    end;
end;
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 06.08.2008, 00:05   #5
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

2 mutabor - да, знаю. Было интересно, как именно работать, если цвет в 16-о виде, не переводя его в 10-ый. Спасиб за подсказку ))))
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 06.08.2008, 00:22   #6
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Было интересно, как именно работать, если цвет в 16-о виде, не переводя его в 10-ый.
Перевод 24-х битного цвета из Hex в Integer (= TColor)
Код:
function Hex2Int(s: string; var r: integer): boolean;
begin
Result:=True;
if Length(s) = 6 then
  begin
  r:=StrToIntDef('$'+ s, -1);
  if r = -1 then Result:=False;
  end
else Result:=False;
end;
Если потом нужно разбить на составляющие есть функции GetRValue и т.д.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 06.08.2008, 00:45   #7
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

2 mutabor - спасибо, примерно понял ))))))
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 06.08.2008, 00:59   #8
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Вспомнил откуда у меня эта функция, это юзер в эдит должен был вводить цвет в HEX формате, в таком виде - FFFFFF. Поэтому там лишнего наворочено, проверки.
А вообще StrToInt делает то, что надо.
color:=StrToInt($FFFFFF);
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 06.08.2008, 15:07   #9
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

у меня все проще - нарисовал спектр (216 квадратиков разного цвета), там пользователь выбирает цвет и все. ))))))
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
String and color RealSHELS Общие вопросы Delphi 9 05.07.2008 09:35
выбор значений в цикле Melok Паскаль, Turbo Pascal, PascalABC.NET 3 15.12.2007 22:56
Редактирование файла в цикле Var17 Общие вопросы Delphi 1 13.12.2007 14:51