Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Вниз

«Мягкие» границы для Битмапа…   Найти похожие ветки 

 
Matrex ©   (2006-02-19 20:40) [0]

Коллеги, как реализовать «мягкие» границы для битмапа. Т.е. конкретная ситуация – есть битмапы логических устройств (диск C, D, E и т.д. для WXP) как сделать «мягкие» границы при прорисовке этих картинок, например, на TSpeedButton, т.к. создание маски с белым цветом оставляет кант вокруг картинки…


 
API   (2006-02-19 21:06) [1]

А зачем Вы оставляете кант?


 
Matrex ©   (2006-02-19 21:18) [2]

:) А они сами по себе получаются... Может я не достаточно ясно объяснился: т.е. у меня есть ImageList c иконками логических устройств, я хочу их прорисовать на кнопках ToolButton, из-за того что XP предполагает тени на иконках, отображение на кнопках имеет не четкие границы: белый цвет скрывается, а вот граница серого цвета (он очень похож на белый) остается. Система при прорисовке этих иконок, например в проводнике, учитывает граниу, и прорисовывает ее очень "мягко" т.е. этот серый цвет перекрывается и кнопка кажется как "литая" без всяких границ и т.д. с тенью...


 
Fenik ©   (2006-02-19 21:45) [3]

Надо переписать функцию отрисовки картинки на кнопке, с учетом прозрачности. Или лучше при старте заготовить картинки, наложив их с прозрачностью на фон, имеющий цвет кнопок, а потом уже выводить на кнопки простым копированием.


 
Matrex ©   (2006-02-19 22:09) [4]

Fenik, создание собственной функции - это вариант номер 1, второй вариант - отрисовка кнопок с известной "подложкой" не решает проблемы т.к. внешний вид кнопок может быть аля 2000 или аля XP или аля XXX. Рискну предположить что есть какая то встроенноя функция, которая может прорисовать битмап с учетом фона, т.к., например, стандартный компонент TPopupMenu успешно справляется с этой задачей, хотя и перекрывает картинку каким-то слижком уж "ярким" синим цветои при наведении мыши, а в остальном картинка прорисована с учетом тени... Кстати, а TotalComander отрисовывает кнопки дисков своими собственными иконками... Неужели это такой уж страшный секрет?


 
API   (2006-02-19 22:26) [5]

белый цвет скрывается, а вот граница серого цвета (он очень похож на белый) остается

А кто Вам мешает границу серого цвета, который очень похож на белый, зарисовать настоящим белым цветом?

Т. е., вопрос только в правильной подготовке исходной картинки.

Совет: Чтобы хорошо был заметен кант, во время редактирования изображения используйте в качестве заливки фона не белый, а какой-то более контрастный, по отношению к белому, цвет. Например, оливковый (clOlive)... То есть, конечно, какой сами выберете...


 
Matrex ©   (2006-02-19 22:59) [6]

Я не знаю, возможно, я создаю проблему на ровном месте, но зарисовать «границу серого цвета, который очень похож на белый» это уже алгоритм (я сейчас как раз пытаюсь это сделать) но тут возникает другая проблема – если тупо перерисовать «серые» оттенки иконки то получается «рваная» картинка (пробовал в PhotoShop, с другой стороны как быть с серым цветом который может находится внутри иконки?)… Я прекрасно понимаю - реализуй алгоритм для того, что бы серые границы преобразовывались в фон, на котором расположена картинка, по какому-то алгоритму и все – проблема решена… Однако я все таки думал что, возможно, есть стандартная функция которая это все реализует…


 
Defunct ©   (2006-02-20 01:23) [7]

> Я не знаю, возможно, я создаю проблему на ровном месте, но зарисовать «границу серого цвета, который очень похож на белый» это уже алгоритм

Это не алгоритм. Это лень..

Берете Image Editor в поставке Delphi и кисточкой прорисовываете иконки к свое программе. Должно быть стыдно тырить чужие рисунки и даже не найти время на то, чтобы эти тыреные рисунки подправить под свою программу.


 
antonn ©   (2006-02-20 06:44) [8]

Defunct ©   (20.02.06 1:23) [7]
Берете Image Editor в поставке Delphi и кисточкой прорисовываете иконки к свое программе.

ну-ну, лучше уж в пайнте:) Microangelo на этом поприще рулит.

по сабжу - там иконки с альфаканалом, потому и мягкие переходы наличествуют. Можно подыскать иконки в png и передрать их в 32бит битмап, а его уже без лишних библиотек и выводить. По крайней мере я так и делаю в одном своем проекте:)
можно попытаться найти алгоритм типа "Directional smooth" из Корел:ФотоПайнт, очень хорошо резкие переходы сглаживает.
или создать маску для иконки и слегка размыть ее Гаусом, собрать в 32битный битмап и выводить.


 
Compton's G ©   (2006-02-21 16:00) [9]

Defunct ©  

Да, по-любому, стыдно, меня так совесть грызёт за каждую "стыренную" иконку, что аж спать ночью не могу. :)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.044 c
2-1141837143
ctudent
2006-03-08 19:59
2006.03.26
Запись слова в массив


2-1141985633
Gleb
2006-03-10 13:13
2006.03.26
Как с помощью Delphi перемножить две матрицы?


5-1127479324
Priest
2005-09-23 16:42
2006.03.26
Сделать недоступным пункт меню редактора компонента


1-1140452149
Gear
2006-02-20 19:15
2006.03.26
Динамическое размещение объектов на форме.


2-1141837878
Volkodav
2006-03-08 20:11
2006.03.26
Перетаскивание формы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский