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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2012, 13:19   #1
sasha_gavrithing
 
Регистрация: 01.05.2012
Сообщений: 7
По умолчанию Как создать окно по PNG с прорисовкой контролов

Добрый день!

Хочу разработать скин-движок для своего плеера. Скажите пожалуйста, как добиться изменения интерфейса с прорисовкой контролов используя PNG, и чтобы можно было изменять текстуры самих контролов, так же как и в AIMP'е и в WinAmp'е.
sasha_gavrithing вне форума Ответить с цитированием
Старый 09.12.2012, 18:02   #2
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Добрый день. Набросал небольшой пример, рисующий фоновое изображение и 2 кнопки.

Исходник и бинарник во вложении.

PS. В AIMP`е, если не ошибаюсь, для рисования используется библиотека GDI+, но сам принцип рисования будет примерно таким, как в примере.
Вложения
Тип файла: zip SkinEngine-bin.zip (854.9 Кб, 46 просмотров)
Тип файла: zip SkinEngine-src.zip (77.5 Кб, 39 просмотров)

Последний раз редактировалось kangreon; 09.12.2012 в 18:07.
kangreon вне форума Ответить с цитированием
Старый 09.12.2012, 18:31   #3
sasha_gavrithing
 
Регистрация: 01.05.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от kangreon Посмотреть сообщение
Добрый день. Набросал небольшой пример, рисующий фоновое изображение и 2 кнопки.

Исходник и бинарник во вложении.

PS. В AIMP`е, если не ошибаюсь, для рисования используется библиотека GDI+, но сам принцип рисования будет примерно таким, как в примере.
Спасибо огромное! А можно сделать так, чтобы за место формы было PNG изображение как раз как в AIMP(Main Form и Splash)?

Последний раз редактировалось sasha_gavrithing; 09.12.2012 в 18:41.
sasha_gavrithing вне форума Ответить с цитированием
Старый 09.12.2012, 19:19   #4
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Да, можно. В событии OnCreate формы нужно дописать:
Код:
  TransparentColor := True;
  TransparentColorValue := $FF00FF; // Цвет в RGB, который будет прозрачным
  BorderStyle := bsNone; // Убирает рамку вокруг формы
Для изображения:

Получится так:
Изображения
Тип файла: png bgImage.png (2.7 Кб, 142 просмотров)
Тип файла: png q.png (13.3 Кб, 145 просмотров)
kangreon вне форума Ответить с цитированием
Старый 10.12.2012, 04:58   #5
sasha_gavrithing
 
Регистрация: 01.05.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от kangreon Посмотреть сообщение
Да, можно. В событии OnCreate формы нужно дописать:
Код:
  TransparentColor := True;
  TransparentColorValue := $FF00FF; // Цвет в RGB, который будет прозрачным
  BorderStyle := bsNone; // Убирает рамку вокруг формы
Это не решает мою проблему: остаются "лиловые пиксели". Как это сделать используя PNG и GDI+, чтобы было как в АИМП'е на Main Form?
sasha_gavrithing вне форума Ответить с цитированием
Старый 10.12.2012, 05:45   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это должно решить, если правильно выбраны цвета.
+ нет переходов между нужным и не нужным.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.12.2012, 14:08   #7
sasha_gavrithing
 
Регистрация: 01.05.2012
Сообщений: 7
По умолчанию

kangreon, а как в Вашем примере на кнопку поместить Caption?
sasha_gavrithing вне форума Ответить с цитированием
Старый 10.12.2012, 23:46   #8
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Как вариант, добавить публичное свойство Caption в класс кнопки и в процедуре перерисовки выводить текст
Код:
  Canvas.TextOut(0, 0, FCaption);
Для выравнивания текста по центру кнопки, поищите описание класса TCanvas. Можно рассчитать координаты отрисовки вручную или поищите WInApi функцию, выравнивающую текст по центру.
kangreon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать главное окно диалоговым Sylar9 Win Api 2 03.08.2012 01:13
Паранойя, или как создать окно? #include <Markus> Visual C++ 1 24.01.2012 22:32
как создать окно Arassir JavaScript, Ajax 2 26.06.2011 16:45
Как создать необычное окно? Fog Win Api 3 31.01.2011 12:22
Как создать окно без рамки Electron Общие вопросы C/C++ 1 19.03.2010 09:37