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

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

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2016, 11:44   #1
Irina_Peganova
 
Регистрация: 28.06.2016
Сообщений: 3
По умолчанию Сохранение в string цвета пикселя в формате $хххххх

Добрый день. Дело вот в чём: хочу реализовать в Lazarus переливающуюся картинку-радужку и я сразу же столкнулась с проблемой того, что не знаю, как сохранить в переменной типа стринг код цвета пикселя, например $FFFFFF (ну или наоборот). Реализуемо ли это вообще в Lazarus?
In code we trust!
Irina_Peganova вне форума Ответить с цитированием
Старый 28.06.2016, 11:50   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

а зачем Вам стринг (строка?!).
Для представления цветов используется тип TColor (Integer по сути).

или вы про функции StringToColor и ColorToString ? (см. Colors in freepascal)

Последний раз редактировалось Serge_Bliznykov; 28.06.2016 в 11:56.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.06.2016, 22:41   #3
Irina_Peganova
 
Регистрация: 28.06.2016
Сообщений: 3
По умолчанию

String или Integer нужен, чтобы как-то работать с цветами. Допустим, я хочу, чтобы слева направо значение цвета пикселей увеличивалось на 100.
Если я пишу:
Код:
Image1.Canvas.Pixels(100, 100):=Image1.Canvas.Pixels(100, 100)+100;
или

Код:
Str:=ColorToString(Image1.Canvas.Pixels(100, 100))
... то мне выдаёт
Цитата:
Wrong number of parameters specified for call to "GetPixels"
In code we trust!
Irina_Peganova вне форума Ответить с цитированием
Старый 28.06.2016, 23:27   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

разберись, чо такое цвет RGB и строки тебе не понадобятся.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 29.06.2016, 07:48   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Вам же дали ссылку. Задаете R, G, B через function RGBToColor(R, G, B: Byte): TColor;
Получите TColor, который натяните на пиксель.
Код:
Image1.Canvas.Pixels(100, 100):=Image1.Canvas.Pixels(100, 100)+100;
Это порочный путь. Визуальные компоненты предназначены для ввода и отображения информации. Они не должны участвовать в алгоритме непосредственным образом. Введите переменные-посредники для цвета и меняйте их в зависимости от координат пикселя на пример.
Код:
Str:=ColorToString(Image1.Canvas.Pixels(100, 100))
Насколько мне известно, так можно делать не со всеми цветами.
Может Вам надо function ColorToHex(color: TColor): String; ?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 29.06.2016 в 07:55.
Utkin вне форума Ответить с цитированием
Старый 29.06.2016, 08:16   #6
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

А почему у Pixels(100, 100) - скобки круглые, а не квадратные?
Вам что надо сделать, типа этого :
Код:
var
  Form1: TForm1;

implementation

{$R *.lfm}
function fRGBtoColor(R,G,B:byte):TColor;
begin
 Result:=clBlack+R+256*G+256*256*B;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i,j:Integer;
begin
  for i:=0 to Image1.Width-1 do
   for j:=0 to Image1.Height-1 do
    Image1.Canvas.Pixels[i,j]:=fRGBtoColor(i mod 255,j mod 255,128);
end;
end.
Изображения
Тип файла: jpg ра.JPG (26.1 Кб, 85 просмотров)
type_Oleg вне форума Ответить с цитированием
Старый 29.06.2016, 08:28   #7
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

Вот так красивше. Размер Имаге увеличить, и одну цифру в коде.

PS Да, логичнее наверное mod 256, а не mod 255 . Хотя это мало что меняет.
Изображения
Тип файла: jpg ра2.JPG (33.9 Кб, 81 просмотров)

Последний раз редактировалось type_Oleg; 29.06.2016 в 08:38.
type_Oleg вне форума Ответить с цитированием
Старый 29.06.2016, 08:43   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Код:
Image1.Canvas.Pixels[i,j]:=
Сестра! 20 кубиков вакцины от говнокодинга пациенту!

----------
Не, ну вы чо, серьёзно? Pixels[]?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 29.06.2016, 19:58   #9
Irina_Peganova
 
Регистрация: 28.06.2016
Сообщений: 3
По умолчанию

Всем спасибо, разобралась. Просто не могла понять вначале, как в принципе можно работать со цветом, так что простите за то, что не сразу въехала))
In code we trust!
Irina_Peganova вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение цвета пикселя Syn-McJ C++ Builder 2 29.05.2010 15:27
Изменение цвета пикселя sysl Общие вопросы Delphi 2 07.03.2010 20:36
Установка цвета пикселя Артэс Win Api 14 25.07.2009 11:38
Определение цвета пикселя Artem Общие вопросы Delphi 8 13.07.2007 14:33
функции чтения цвета пикселя Геннадий Общие вопросы Delphi 1 13.11.2006 20:03