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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2011, 19:53   #1
saylar_06
Пользователь
 
Регистрация: 01.12.2009
Сообщений: 46
По умолчанию форма в виде картинки (делаю дизайн)

Доброго времени суток! Уважаемые Форумчане! Вот не выдержал решил обратится к вам за помощью, пиши простую программу для лабораторной работы, нужно что то оригинальное и поэтому решил сделать дизайн для программы... Суть проблемы такова:

Как я понял нужно сделать форму невидимой а компоненты тобишь картинку видимой. Какими только путями я это не делал но результат у моей картинки бывает обводка...

Пробовал скрыть форму с помощью ТранспретКолор (делал и желтый и зеленый(пёстрые цвета чтоб на картинки остались нужные мне)) форма становилать невидимой а компоненты были видимы, нарисовал в фотошопе картинку PNG с прозрачным фоном так у меня появляется обводка моей картинки в программе тем цветом что я указал в ТрансперКолор'е даж BMP юзал та же беда

позже решил сделать небольшой код

Form1.Brush.Bitmap := Image1.Picture.Bitmap;
nullClr := Image1.Picture.Bitmap.Canvas.Pixels[0, 0];

regn := CreateRectRgn(0, 0, Image1.Picture.Graphic.Width,
Image1.Picture.Graphic.Height);

for x := 1 to Image1.Picture.Graphic.Width do
for y := 1 to Image1.Picture.Graphic.Height do
if Image1.Picture.Bitmap.Canvas.Pixels[x - 1, y - 1] = nullClr then
begin
tmpRegn := CreateRectRgn(x - 1, y - 1, x, y);
CombineRgn(regn, regn, tmpRegn, RGN_DIFF);
DeleteObject(tmpRegn);
end;
SetWindowRgn(Form1.handle, regn, true);

но результат тот же)) непонятная обводка, тут уже бывает обводка фона картинки ведь фон у неё не прозрачный...

Подскажите что я делаю не так?
saylar_06 вне форума Ответить с цитированием
Старый 06.10.2011, 01:25   #2
gamer-25
Пользователь
 
Регистрация: 21.09.2011
Сообщений: 25
По умолчанию

Color:= Image1.Canvas.Pixels[0,0];
TransparentColor:= True;
TransparentColorValue:= Image1.Canvas.Pixels[0,0];

А если появляется обводка то значит цвет не Транспарент.

Последний раз редактировалось gamer-25; 06.10.2011 в 01:29.
gamer-25 вне форума Ответить с цитированием
Старый 06.10.2011, 09:12   #3
saylar_06
Пользователь
 
Регистрация: 01.12.2009
Сообщений: 46
По умолчанию

Цитата:
Сообщение от gamer-25 Посмотреть сообщение
Color:= Image1.Canvas.Pixels[0,0];
TransparentColor:= True;
TransparentColorValue:= Image1.Canvas.Pixels[0,0];

А если появляется обводка то значит цвет не Транспарент.
не совсем вас понял, но ваш код из трех строк идентичен моему, поразительно! И в то же время обидно

обводка происходит в любом случае((

вот гляньте на исходники...
Вложения
Тип файла: rar проект.7z.RAR (1.18 Мб, 47 просмотров)
saylar_06 вне форума Ответить с цитированием
Старый 06.10.2011, 18:01   #4
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
По умолчанию

На самом деле все очень просто... С такой проблемой я уже сталкивался, Есть моя тема "Стрельба Игрушка 2D" http://www.programmersforum.ru/showt...wpost&t=166895. Все дело в том, что какбы объяснить, увеличте свое изображение в фотошопе, ну побольше желательно, и увидете эту обводку, допустим если у вас Transpert=clWhite белый цвет, то delphi будет строго считать белый цвет допустим RGB 255 255 255, если 255 255 254, то Delphi считает что это не белый цвет, хотя визуально это белый. Вобщем, я решил проблему так: открыл в фотошопе увеличил и перекрасил нужные пиксели в ручную!
Каждый день узнаю новое...

Последний раз редактировалось Anton911; 06.10.2011 в 18:04.
Anton911 вне форума Ответить с цитированием
Старый 06.10.2011, 20:54   #5
saylar_06
Пользователь
 
Регистрация: 01.12.2009
Сообщений: 46
По умолчанию

хорошо =) допустим что я делаю в трансперт цвет 123 123 123 (ярко зеленый) такого на моей картнке нету =) то есть чтоб просто скрыть форму и вот тебе приветик, всёравно эта ярко зеленая обводка.

Делал дизайн исходя из готовой программы, вот оригинал к стати...
Вложения
Тип файла: rar Launcher.7z.RAR (4.93 Мб, 44 просмотров)
saylar_06 вне форума Ответить с цитированием
Старый 07.10.2011, 07:39   #6
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,883
По умолчанию

123 123 123 это серый - к палитре не ходи )) ярко зеленый это 0 255 0


Думаю, Вашу проблему можно ещё решить посредством создания непрямоугольной формы, поищите на форуме темы подобного рода - принцип такой что создается Регион (rgn, как Вы до этого делали) и Вы в него впишите свою картинку (советую без Timage), и не надо будет бороться с прозрачностью.
Ну а вообще, оратор выше всё правильно говорит - картинка на краях подразмазана и эта область не чисто белая - вот она и рисуется, если хотите не париться - выпилите эту обводку-размытие в фотошопе
phomm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
форма в виде фонового рисунка на рабочем столе. Yura_n C++ Builder 9 02.09.2011 10:10
вопрос про дизайн и картинки kesha477 HTML и CSS 2 23.08.2011 11:20
Фрейм в виде png картинки dmitriegorovih Общие вопросы Delphi 0 16.07.2010 20:42
Главная кнопочная форма в виде вкладок hemo Microsoft Office Access 1 20.02.2009 11:55
Форма с несколькими таблицами в табличном виде. Как сделать? Jenya Microsoft Office Access 1 15.11.2008 20:37