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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2015, 09:37   #1
Evil_Net
Пользователь
 
Регистрация: 04.08.2015
Сообщений: 48
По умолчанию Окрасить уголки картинки в нужный цвет

Пишу карточную игру, все неплохо, но есть одно но, проблема с дизайном. Есть заготовленные картинки игральных карт .png, с прозрачностью на уголках, так как карта не прямоугольная, а имеет округление по углам. Загружаю их в ImageList. Когда достаю их на форму, то прозрачные уголки исчезают и становятся белыми. Понял что такое происходит, так как при загрузки в ImageList идет конвертация в .bmp
Искал в интернете решение, нашел кое что, должно было закрашивать уголки в цвет форму, но не работает.
Код:
var i: integer;
  tempC: TComponent;
  clrForm: TColor;
begin
  clrForm:= rgb(120,144,120);
  //окрасить форму:
  frmMain.Color:= clrForm;
  //для всех компонентов Image установить свойства:
  for i:= 1 to 5 do begin
    tempC:= FindComponent('Image'+ inttostr(i));
    with TImage(tempC) do begin
      //закрасить фон, чтобы не было видно уголков карт:
      Canvas.Brush.Color:=  clrForm;
      Canvas.FillRect(ClientRect);
      //прозрачность:
      transparent:= true;
    end;
  end;
end;
Evil_Net вне форума Ответить с цитированием
Старый 08.10.2015, 10:37   #2
Evil_Net
Пользователь
 
Регистрация: 04.08.2015
Сообщений: 48
По умолчанию

Хотя код работает, если в ImageList загружать .bmp, становится доступным параметр Transparent Color, в котором указываем цвет, который присутствует на картинке и который станет прозрачным. Но вот с .png такое не прокатывает. Вот только как теперь перегнать все эти картинки в .bmp еще не придумал.
Evil_Net вне форума Ответить с цитированием
Старый 08.10.2015, 13:05   #3
Evil_Net
Пользователь
 
Регистрация: 04.08.2015
Сообщений: 48
По умолчанию

Решил проблему данным кодом + перегнал все картинки в .bmp, там где нужна была прозрачность закрашивал цветом #ff00ff, а при загрузке в ImageList в параметре Transparent Color выбирал Fuchsia =)
Evil_Net вне форума Ответить с цитированием
Старый 08.10.2015, 13:13   #4
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 977
По умолчанию

а можно было сделать что бы карта в .png была сделана задним фоном. (легко проверить в фотошопе, этот слой не доступен для редактирования). в этом случае была бы прозрачность и небольшой размер файла.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
IliaIT вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить цвет пикселя у растянутой картинки. N0iD Компоненты Delphi 2 05.06.2014 15:26
Окрасить ячейку в цвет аналогичный другой ячейке FoxRiver Microsoft Office Excel 4 04.11.2013 21:22
Как вырезать цвет из картинки? jone Мультимедиа в Delphi 2 16.08.2013 07:57
Одинаковые ячейки окрасить в одинаковий цвет m_v_v Microsoft Office Excel 4 28.06.2012 19:50
как извлечь цвет картинки Женькааа Помощь студентам 3 28.10.2010 00:49