Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Настройка цвета картинки. 
V
    Опции темы
SAVANE
Дата 12.5.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 20.7.2006
Где: Украина, Полтава

Репутация: нет
Всего: 1



Все привет.
У меня есть компонент, который делает кнопку из 3х картинок (Отпущена, Нажата, Наведена мышь).
Рисунки для кнопок рисовал сам (формат bmp). 
Как мне можно сделать так чтоб пользователь мог менять цвета кнопок (тоесть картинок для этих кнопок).
Картинка нарисована на основе оттенков голубого цвета (градиенты).
Спасибо за любые подсказки потому как я bmp. 

--------------------
Be not afraid of growing slowly, be afraid only of standing still!
PM MAIL WWW ICQ   Вверх
HEyMEXA
Дата 12.5.2008, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 24.4.2008

Репутация: нет
Всего: нет



скажи чо за компонетнт а лучше его выложи
PM MAIL   Вверх
SAVANE
Дата 12.5.2008, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 20.7.2006
Где: Украина, Полтава

Репутация: нет
Всего: 1



Суть не в компоненте.
HEyMEXA Если компонент нужен иши на форуме.
Их на самом деле много. 
Если лень пиши в ПМ адрес почты вечером вышлю. 


--------------------
Be not afraid of growing slowly, be afraid only of standing still!
PM MAIL WWW ICQ   Вверх
SAVANE
Дата 13.5.2008, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 20.7.2006
Где: Украина, Полтава

Репутация: нет
Всего: 1



НАшел в ДРКБ код чуть подстроил его под себя и тем самым могу менять оттенок картинки
Вот пример для изменения в сторону убывания цвета РЕД.
Подскажите пожалуйста как исключить изменение белого цвета (тоесть чтобы белое оставалось белым)
В коде использовал if (R<253) and (B<253) and (G<253) then но не работает. Толи картинка ваще не меняется толи и белый меняет.

Код

function Mixer22(Bitmap: TBitmap; Value: Byte): TBitmap;
type
TRGB = record
   B, G, R: Byte;
end;
pRGB = ^TRGB;
var
x, y: Word;
Dest: pRGB;
begin
Begin
    for y := 0 to Bitmap.Height - 1 do begin
     Dest := Bitmap.ScanLine[y];
     for x := 0 to Bitmap.Width - 1 do begin
       with Dest^ do
           if (R<253) and (B<253) and (G<253) then R := BLimit(Round(R-1));
       Inc(Dest);
       end;
     end;
   end;
   Result:=Bitmap;
end;


P.S.
Наконецто толком могу сформулировать задачу. 
Есть картинка (с градиентом). На ней можно выделить основной цвет. К примеру голубой. Нужно чтоб пользователь таская 3 ТракБара мог менять картинку таким образом чтоб заменялся основной цвет(т.е. голубой) на тот который выставляется трекбарами (Соответствено чтобы менялся градиент к примеру не от голубого к белому а от красного к белому.) Ну и плюс чтоб на картинке белый цвет оставался всегда белым.

Это сообщение отредактировал(а) SAVANE - 13.5.2008, 15:47
--------------------
Be not afraid of growing slowly, be afraid only of standing still!
PM MAIL WWW ICQ   Вверх
SAVANE
Дата 13.5.2008, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 20.7.2006
Где: Украина, Полтава

Репутация: нет
Всего: 1



Код

function BLimit(B: Integer): Byte;
begin
   if B < 0 then
     Result := 0
   else if B > 255 then
     Result := 255
   else
     Result := B;
end;
.....................
Procedure ButtonMixer(Bitmap: TBitmap; RT, GT, BT: integer);
type
TRGB = record
   B, G, R: Byte;
end;
pRGB = ^TRGB;
var
x, y: Word;
Dest: pRGB;
begin
   for y := 0 to Bitmap.Height - 1 do begin
     Dest := Bitmap.ScanLine[y];
     for x := 0 to Bitmap.Width - 1 do begin
       with Dest^ do begin

              if R <> 255 then R:=Blimit((R+RT) div 2);
              if G <> 255 then G:=Blimit((G+GT) div 2);
              if B <> 255 then B:=Blimit((B+BT) div 2);

       end;
       Inc(Dest);
     end;
   end;
end;


Использование
Код

ButtonMixer(image2.Picture.Bitmap, TrackBar1.Position, TrackBar2.Position, TrackBar3.Position);

 smile  smile  smile

ТракБары Мин=-255 МАХ=255 

Это сообщение отредактировал(а) SAVANE - 13.5.2008, 16:36
--------------------
Be not afraid of growing slowly, be afraid only of standing still!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0413 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.