| 
| 
 | Вопрос # 1 913/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!Прошу прощения, если тема старая. Я использую Delphi7+delphiX. Подключая графику, получаю вокруг картинок контур, так как по краю картинки не чистый tranparent color, а его градиент от цвета прозрачности к цвету картинки. Хотелось бы использовать маску, задающую отдельным пикселам прозрачность, только не 100% прозрачность, а, скажем, в зависимости от оттенка маски. Например, цвет маски серый-рисуем пиксел картинкуи полупрозрачным, цвет белый-полностью сохраняем гамму пиксела, цвет чёрный-пиксел прозрачен. Заранее спасибо
 
|  |   Вопрос задал: red_88 (статус: Посетитель)Вопрос отправлен: 18 сентября 2008, 14:52
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Ученый Здравствуйте, red_88! А не проще просто обрезать картинку, ну скажем там в ACDSee или вкакойнибудь другой программе! Или поместить на не прозрачный фон, нужного цвета! 
|  | Ответ отправил: Ученый (статус: 8-ой класс)Время отправки: 18 сентября 2008, 18:45
 
 |  
 Мини-форум вопросаВсего сообщений: 10; последнее сообщение — 22 сентября 2008, 14:55; участников в обсуждении: 3. 
|   | Ученый (статус: 8-ой класс), 18 сентября 2008, 18:34 [#1]:А не проще просто обрезать картинку, ну скажем там в ACDSee или вкакойнибудь другой программе! |  
|   | red_88 (статус: Посетитель), 18 сентября 2008, 21:29 [#2]:2 Учёный. Идея хорошая, но не всегда графика имеет четкий контур, так например, нарисованное в шопе мягкой кистью и задумывалось как полупрозрачное по контуру, а обрезание-заливка как раз и оставляют градиент цвета, не обеспечивая прозрачность |  
|   | Ученый (статус: 8-ой класс), 19 сентября 2008, 13:25 [#3]:Посоветую вам посмотреть здесь: <a href="https://www.delphi-int.ru/articles/106/">Обучающий курс. 6. Обзор свойств формы</a>
 А вообше скажу что обрабатывайте картинку в графическом редакторе сразу как надо, так как там можно сделать как вы говорите пиксел и полупрозрачсным, и каким  захотите, причем довольно легко и профессионально!!!
 |  
|   | red_88 (статус: Посетитель), 22 сентября 2008, 12:09 [#4]:мне не надо, чтобы вся картинка была полупрозрачной, просто по контуру цвет должен смешиваться с цветом фона,а т.к. картинка перемещается по фону, то нельзя статично задать цвет пикселов этого контура, а надо его просчитывать, тут то и нужна маска |  
|   | Вадим К (статус: Академик), 22 сентября 2008, 12:24 [#5]:Мне кажеться, что средствами обычного GDI это будет сделать накладно. Надо будет использовать GDI+ и alpha канал. Хотя многие программы делают "обманки". Они при каждом перемещении просто пересчитывают картинку.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | red_88 (статус: Посетитель), 22 сентября 2008, 13:33 [#6]:2 ВадимК я не против пересчитать картинку, еслибы только знать как это делается. разницы между GDI И GDI+ не вижу, потому как не знаю даже с какой стороны смотреть.
 Мне надо картинки выводить из под DelphiX, разьве в нём чегонибудь похожего нет? или мб ктото знает как работать с alpha-каналлами "для чайников"?
 |  
|   | Вадим К (статус: Академик), 22 сентября 2008, 13:40 [#7]:отловить перемещение формы можно по WM_MOVE. При каждом перемещении оно будет вызываться. А разница между GDI и GDI+ большая. Второе поддерживает полноценно прозрачность и альфа канал.
 А вот с DelphiX (Ну на самом деле это обёртка вокруг DirectX) даже не знаю.  Альфаканал точно должно поддерживать. Надо пробовать.
 Алгоритм приблизительно такой. Надо взять картинку декстопа и текущую картинку фона приложения и смешать. А вот как будем смешивать - встроенными средствами или вручную - отдельная тема.
 Хотя уже предчувствую, что под вистой прийдётся долго помучиться, что бы не было черной каймы вокруг приложения.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | red_88 (статус: Посетитель), 22 сентября 2008, 14:44 [#8]:наверное, я плохо объясняю. движется не сама форма, а картинки по форме (рыбки плавают), соответственно они и должны перерисовываться. вопрос в том как осуществить перерисовку не попикселно, а, скажем, процедурой, наложив спрайт на область фона. есть ещё проблеа в том, что рыбки могут пересекаться, тогда проблема увеличивается. интересует, в первую очередь, вопрос о том, есть ли в delphiX наследник спрайта, работающий с маской примерно так: загрузил image, загрузил mask, и дальше только перемещаем спрайт, а прорисовка сама идёт, или же обязательно обрабатывать каждую картинку в отдельности? |  
|   | Вадим К (статус: Академик), 22 сентября 2008, 14:50 [#9]:Попиксельная процедура - это почти всегда плохо, потому что это медленно. С делфиХ не работал, но думаю там должна быть функция, которая сможет рисовать либо исползуя маску, либо, что более вероятно - альфаканал.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | red_88 (статус: Посетитель), 22 сентября 2008, 14:55 [#10]:попикселно не только плохо, но ещё и заморчно=лень  по гуглу не нашёл такой процедуры, мб есть ссылки на ресурсы посвященные работе с delphiX?
 delphiworld и drkb прошу не предлагать, уже облазил
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |