![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Emulator |
|
|||
|
Unregistered |
Как загрузить картинку в компонент
ImageList так чтобы она имела свойство прозрачности. var BMP:TBitmap; BMP:= TBitmap.Create; BMP.LoadFromFile(MFile); Immages.Add(BMP,BMP); BMP.Free; |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
DrawingStyle = dsTransparent?
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Emulator |
|
|||
|
Unregistered |
Нет нужно чтоб розовый фон вокруг картинки был невидим
|
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Нижний левый пиксель, всегда является цветом прозрачности.
-------------------- |
|||
|
||||
| Emulator |
|
|||
|
Unregistered |
И что дальше делать ?
|
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
А ничего.
Повторюсь, если вы хотите сделать какие-либо области прозрачными, закрасте их таким цветом, какой в нижнем левом пикселе картинки. Ну а затем загрузите этот битмап в TImageList и радуйтесь результату. -------------------- |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
А че серьезно нижний левый?
А я то постоянно к верхнему левому привязывал ну [1,1] типа. -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
nJIaKca.spb, да серьёзно. Видимо у тебя эти два пиксела всегда совпадали...
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Emulator |
|
|||
|
Unregistered |
А как определить Цвет Картинки ?
|
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
Pegas, p0s0l, с чего это левый нижний? битмапы бывают двух разных видов, top-down и bottom-up, что соответствует порядку загрузки "строк" пикселей. по умолчанию (т.е. TransparentMode = tmAuto) прозрачность определяет первый пиксел в массиве данных, который может быть как левым нижним, так и левым верхним, в зависимости от типа битмапа. помимо режима по умолчанию, есть режим принудительный, tmFixed, если мне не изменяет память, который включается автоматом при установке свойства TransparentColor.
это означает, что если надо сделать розовый цвет прозрачным, надо просто сказать Bmp.TransparentColor := clFuchsia Добавлено @ 16:23 Emulator, а что считается "цветом картинки"? -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
x77, конечно, всё это очень поучительно... Но либо я такой отставший от жизни, либо ты заблуждаешься. Почему-то ниразу мне не приходилось за прозрачность брать левый верхний символ - или вымерли bmp такого вида ?
Кстати, бывает иногда полезно заглянуть в хелп:
Нигде нет оговорки про зависимость от формата bmp-шки. Ладно, что там гадать - взял файл "a.bmp" - скопировал его в файл "b.bmp", в Hex-Edit'е поменял свойство Height на отрицательное (было 80h, стало FFFFFF80h), проверил в ACDSEE - теперь одна картинка стала перевернутой копией другой. Загружал эти две картинки в TImage, TImageList - в обоих случаях берется левый нижний пиксел битмапа, независимо от того, перевернутый битмап или нет. Так что твои суждения оказались неверными насчет первого байта данных... -------------------- С уважением, г-н Посол. |
|||
|
||||
| Emulator |
|
|||
|
Unregistered |
Народ Так как Определить Цвет (Левый верхний) ? Если можно то кодом.
|
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
У ImageList свойство Masked должно быть True.
Свойство DrawingStyle оставь по-умолчанию - dsNormal. Вместо ImageList.Add(Bmp, Bmp) делай так: ImageList1.AddMasked(Bmp, Bmp.Canvas.Pixels[0, 0]); - тогда верхний левый пиксел будет определять цвет прозрачности или же можешь принудительно задать цвет прозрачности: ImageList1.AddMasked(Bmp, clFuchsia); -------------------- С уважением, г-н Посол. |
|||
|
||||
| Emulator |
|
|||
|
Unregistered |
Спасибо Посол!
|
|||
|
||||
| x77 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
p0s0l, правильно, давай друг друга справками давить:
ты "свою" справку дочитай до конца: TransparentMode определяет, является ли цвет прозрачности высчитываемым автоматически, или берётся из фиксированного значения в битмапе. если он равен tmFixed, то он берётся либо из левого нижнего, либог из левого верхнего в зависимости от типа битмапа. установка свойства TransparentColor автоматом ставит TransparentMode в tmFixed, запрещая, таким образом, автоматическое определение цвета прозрачности. со справкой разобрались. теперь разберёмсяс кодом:
что разницы нет, сказать Bmp.TransparentColor := clFuchsia, как изначально предлагал я, или ImageList.AddMasked (Bmp, clFuchsia), как предлагаешь ты. и в чём моё заблуждение - я пока так и не понял. смысла твоих манипуляций с HexEdit'ом я, если честно, тоже не понял. Это сообщение отредактировал(а) x77 - 4.5.2004, 10:34 -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |