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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2012, 22:42   #1
alik98
Пользователь
 
Регистрация: 28.05.2012
Сообщений: 54
По умолчанию Вывод оттенков зеленого

Нужно сделать программу на Паскаль, которая рандомно выводит на экран оттенки зеленого. Пытался сделать через RGB. Пробовал задавать цвет таким образом:

Код:
setcolor(RGB(red,green,blue))
Но получаю "Ошибку прверки диапазона", хотя цвета точно заданы в пределах 0<color<256. Вобще я даже не уверен в том, что делает функция RGB и ссылался на найденное в интернете только на одном сайте (гугл и справка паскаля гордо молчали). В общем-то, проблема с выводом RGB цвета и является моей главной проблемой, потому что нужно сделать именно через RGB.

Насчет функции RGB: Я так понял. что она принимает значения красного, зеленого и синего, и выдаёт номер соответствующего цвета в стандартной палитре.

P.S. Выставлен режим SVGA600X800X32768.
P.P.S. Прошу прощения, за то, что немного неграматно описал проблему. Головная боль после четырех часов поисков дала о себе знать.

Последний раз редактировалось alik98; 16.09.2012 в 01:01.
alik98 вне форума Ответить с цитированием
Старый 16.09.2012, 00:36   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Хм...
Цитата:
SetColor(5) делает пятый цвет в палитре цветом текущего рисунка. Цвет может быть задан числом от 0 до 15 (для стандартных драйверов), в зависимости от текущего графического драйвера и текущего графического режима.

GetMaxColor возвращает самый высокий допустимый цвет для текущего драйвера и режима.
ПС http://pascal.sources.ru/graph/svgafscr.htm
Не отвечать после 12, не отвечать после 12... (уже тоже плохо соображаю)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 16.09.2012 в 00:42.
BDA вне форума Ответить с цитированием
Старый 16.09.2012, 01:00   #3
alik98
Пользователь
 
Регистрация: 28.05.2012
Сообщений: 54
По умолчанию

И как мне это поможет с RGB? Я знаю, как работает Setcolor, но мне нужно задавать цвет через RGB, а не через стандартную палитру. А Getmaxcolor вообще какое имеет отношение к моей проблеме?
alik98 вне форума Ответить с цитированием
Старый 16.09.2012, 08:35   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
И как мне это поможет с RGB? Я знаю, как работает Setcolor, но мне нужно задавать цвет через RGB, а не через стандартную палитру. А Getmaxcolor вообще какое имеет отношение к моей проблеме?
давайте начнём с другого. У Вас какой Паскаль (IDE/компилятор) ? Без знания того, под что Вы пишете трудно Вам подсказать...


p.s. Turbo Pascal, например, понятия не имеет, что это за функция RGB
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.09.2012, 11:38   #5
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

хм... ничего не понимаю
Код:
uses Graph, Crt;

var
  grDriver : Integer;
  grMode   : Integer;
  ErrCode  : Integer;
  i : Integer;

begin
  grDriver := Detect;
  InitGraph(grDriver, grMode, 'X:\BP');
  ErrCode := GraphResult;
  if ErrCode = grOk then
  begin
    { Графика}
    for i := 0 to 255 do begin
        SetRGBPalette (23, 0, i, 0);
        SetColor (23);
        Line(1, i, GetMaxX, i);
        {Delay(1000);}
    end;
    ReadLn;
    CloseGraph;
  end
  else
    WriteLn('Ошибка инициализации графики', GraphErrorMsg(ErrCode));
end.
По логике программа дожна выводить 256 строк, с оттенками зеленого, НО почему при смене аргумента в SetColor'e (разумеется и в SetRGBPalette), все меняется и выводится только 1 цвет. (с графикой работал очень давно => не понмю...)

Последний раз редактировалось Poma][a; 16.09.2012 в 11:41.
Poma][a вне форума Ответить с цитированием
Старый 17.09.2012, 18:39   #6
alik98
Пользователь
 
Регистрация: 28.05.2012
Сообщений: 54
По умолчанию

Я думал о создании палитры, но мне нужны не только оттенки зеленого по тону, но и с небольшими примесями других светов. Но ладно, боюсь другого выхода не осталось.
alik98 вне форума Ответить с цитированием
Старый 17.09.2012, 18:41   #7
alik98
Пользователь
 
Регистрация: 28.05.2012
Сообщений: 54
По умолчанию

А, кое-чего не заметил в вашей программе. Всё так как мне и было нужно, но у меня по той же причине ничерта не работало. Это не ошибка и не глюк. Дело в том, что вы меняете цвет по его id в палитре, а точкам на экране присваевается id цвета, сам он уже берется из палитры через id. Что б работало, нужно пол палитры перелапатить, присвоив номерам цветов setcolor и setrgbpalette i.

Последний раз редактировалось alik98; 17.09.2012 в 19:16.
alik98 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод списка символов справа налево 5 раз подряд и исключить вывод цифр Gareek Помощь студентам 2 23.12.2011 21:41
Вывод из БД Bustle PHP 5 11.04.2011 23:08
Вывод из БД zircon PHP 2 11.04.2011 11:47
Вывод RedScreenOfLife Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 29.10.2010 21:17
Вывод C heart Общие вопросы C/C++ 6 17.08.2009 11:29