|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Небольшая проблема с графикой на странице. Есть SVG, на его основе создается битмап и пишется в поток страницы, задача - сделать фон этого битмапа прозрачным. Пробовал Код: plaintext
Не работает. Фон становится черным при любых установках цвета. Если кто встречал подобное или знаете как обойти - подскажите плиз, горю. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2003, 21:25 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Там, по-моему, нужен еще слой между "подложкой" - это она черная и собственно картинкой, слой этот должен иметь цвет страницы, белый, например. Пример из MSDN у меня нифига не работал, там есть статья по этому поводу, может у тебя заработает. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2003, 18:55 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Какой пример? Я вот один сейчас колупаю, но пока что no luck. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2003, 20:00 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
так а вариант с дополнительным слоем чем плох? Я колупался тоже долго, у меня было так: клиент аплодил файл в базу, то есть вообще неизвестно, что за файл, надо было отсекать лишнее по размерам в пикселах и килобайтах, типу, ну и среди прочего мог аплоадится прозрачный гиф. Поскольку они у меня тоже становились серыми, единственное, что я нашел нормальное, кроме варианта смены палитры, делать квадрат в размер картинки, и на него класть имидж. Получение углового пиксела нифига не работало в моем случае, потому что имидж из базы, он уже с этой "подложкой" у меня из BLOB вынимался. И потом, когда не знаешь, что за файл, не угадаешь, что в этом угловом пикселе. Вот что-то А вот пример, и по-моему был еще один, но я что-то не нашел статья ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2003, 22:52 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Как сделать этот слой? У меня опыта с GDI предельно мало, толком даже не знаю какие классы использовать. Профиль у меня не тот. А вот понадобилось. Система у меня еще более мутная но похожа на твою: Клиент аплоадит файл, но не гиф а SVG, в этом формате он и заливается в базу(ntext). На другой странице читается, парсится, пишется в стрим страницы, для каждого элемента создаются линки, но эт долгая история. С него и создается битмап, но этот жуткий белый фон... Пример этот я уже смотрел, не совсем то, хотя пищу для размышления получил, а вот за статейку спасибо, очень интересно, попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2003, 23:10 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2003, 23:32 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
слой здесь как бы Rectangle, хотя это не слой, конечно, формально ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2003, 23:39 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Эх. попробовал. Не работает. Все равно фон остается белым. Если с MakeTransparent, как и было - черный. Нарыл тут кое что по прозрачности. И тебя по ColorMatrix инфы нету? В смысле где там альфа где цвета? Не хочу наугад тыкать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2003, 14:59 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
вот есть неплохая статья , правда в самом нужном месте автор обзывается и отсылает к MSDN. Тем не менее, средствами GDI+ создать GIF с прозрачностью можно. Это потребует прямой работы с битами изображения, так как изображение должно будет содержать не более 256 цветов и оставаться в индексном формате. Только тогда кодек распознает первый цвет в таблице цветов, содержащий 0 в поле Alpha, как прозрачный, и правильно сохранит файл. Настоящих комсомольцев отсылаю к соответствующим статьям Knowledge Base с полным описанием технологии процесса: INFO: GDI+ GIF Files Are Saved Using the 8-Bpp Format (Q318343) HOW TO: Save a .gif File with a New Color Table By Using GDI+ (Q315780) HOW TO: Save a .gif File with a New Color Table By Using Visual C# .NET (Q319061) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2003, 15:24 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Спасибо, щас посмотрю. Скажи мне толко одну вещь: У тебя это когда нить работало? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2003, 16:08 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Лучшим вариантом выходит, через атрибуты и матрицу цветов заменять белый на альфа. Надо порпобовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2003, 16:16 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Если ты заменишь белый на альфа, у тебя опять просветится черная подложка :) В том варианте, который я дал, работало, то есть неизвестный прозрачный имидж нужно было просто вывести корректно другого размера, на нужном и заранее известном фоне, белого цвета. Копать дальше в моем случае смысла не имело, потому что, фон однозначно белый. И потом ресур публичный, затратные операции с GDI не очень-то нужны, там и так без кэширования хватает. То есть это скорее из разряда "знаете как обойти", чем прямое решение проблемы.Я вчера даже где-то читал, что это баг такой. У тебя задача посложнее... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2003, 16:54 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Все еще интереснее. Страница то не просто синяя, а с обоями. Т.е. просто прицепить фон нужного цвета не катит. Пока, для нового заказа потребовалось менять весь лейаут, страницы захотели тупо черными, фон я черный прилепил. Но это только для данного конкретного клиента, а далее надо решать. Я щас пробую сделать прозрачный фон в процессе парсения SVG а не после него. Если сростется опубликую . С этой подложкой не совсем понятно. Где в таком случае, в этой иерархии находятся обои? Они подложкой не являются? И почему она черная? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2003, 21:27 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Вот тут тема интересная, толку правда от маловато Is someone From MS GDI+ team reading this ? (transparent Gifs) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2003, 23:44 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Интересно, но у меня как раз наоборот :). Сделать прозрачный гиф уменя получилось, но саму картинку, не фон. Полупрозрачная картинка на белом фоне - без проблем, а вот прозрачный фон... Пока мучаюсь. Так все-таки, что с подложкой? Это что то вроде Z-Ordera? Почему при подключении альфа, она копает аж до черного? Ведь цвета должны смешиваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2003, 14:09 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Черт. Все перекопал. Немного переделал парсер. Теперь вместо конвертирования "потом" пытаюсь добавить прозрачность сразу в парсере. Путь описанный в статье(равно как и некоторые другие) работает для картинки. Но если пытаюсь применить ту же технологию к фону(перед конструированием элемнтов создаю начальный слой с прозрачностью), он тупо перекрашивается в черный. Кстати, в последней статье, похоже, определились что это действительно баг, хотя .NET команда этого не признает, но и подходящего способа выдать неможет. Сьезжают. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2003, 16:05 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
ну так я ж писал тебе, что если ты заменишь белый на альфа, у тебя опять просветится черная подложка. В такой ситуации лучше сосредоточиться, напрячься и захотеть сделать как-нибудь по другому :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2003, 16:49 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Ну, да. Но раньше я его конвертировал и от белого фона оставались уродливые пикселы по краям. Сейчас он черный изначально. Хоть что то. Основная проблема в том что для страницы изначально не существует обьекта GRaphics, на котором можно было бы все это малевать. А все примеры для WinForms :(. В том то и заковыка. Уже и незнаю куда копать. На "по-другому" сейчас к сожалению нет времени, это потребыет значительной переработки и других страниц а во вторник должно быть готово. Осталась только одна эта хрень. А если как нибудь взять исходный rect со страницы? Т.е. с того места где должен быть пикчер. Создать на его основе Gr, и на нем уже рисовать. Что думаешь? Возможно ли такое? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2003, 19:04 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Да, так кстати, тоже можно. Надо кроме Source и Destination сделать еще один Bitmap Middle и перед Grx.DrawImage(Source, New Rectangle(0, 0, NewWidth, NewHeigth)) сделать Grx.DrawImage(Middle, New Rectangle(0, 0, NewWidth, NewHeigth)), я попробовал, сквозь верхний слой текстура просвечивает ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2003, 19:33 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Dim Middle As New Bitmap("path"), то есть можно взять именно нужную текстуру. Хорошо, если за 2 строки кода можно это решить :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2003, 19:36 |
|
Transparent backgrpound - BLACK?
|
|||
---|---|---|---|
#18+
Значит нужно маленько посчитать. Там текстура неоднородная. Перливается сверху-вниз темно-синий->синий. T.e. надо еще нужный кусок вычислить. А как быть тогда с разными разрешениями? Тейбл на странице расползется, участок будет уже другой. Блин. Под разрешение тоже придется пересчитывать. Вот кстати, только что нарыл преинтереснейший материалец! ОНО! В самую точку: ASP.NET & GDI+ Но с меня на сегодня зватит. В понедельник разберусь. Еще раз спасибо за участие! До понедельника! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2003, 22:27 |
|
|
start [/forum/topic.php?fid=18&fpage=1045&tid=1396224]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 253ms |
total: | 405ms |
0 / 0 |