Объединение двух иконокDelphi , Графика и Игры , ICOОбъединение двух иконок
Оформил: DeeCo { I want to combine 2 icons like Windows does with the links (the small arrow). Can anyone tell me how that works? } function CombineIcons(FrontIcon, BackIcon: HIcon): HIcon; var WinDC: HDC; FrontInfo: TIconInfo; FrontDC: HDC; FrontSv: HBITMAP; BackInfo: TIconInfo; BackDC: HDC; BackSv: HBITMAP; BmpObj: tagBitmap; begin WinDC := GetDC(0); GetIconInfo(FrontIcon, FrontInfo); FrontDC := CreateCompatibleDC(WinDC); FrontSv := SelectObject(FrontDC, FrontInfo.hbmMask); GetIconInfo(BackIcon, BackInfo); BackDC := CreateCompatibleDC(WinDC); BackSv := SelectObject(BackDC, BackInfo.hbmMask); GetObject(FrontInfo.hbmMask, SizeOf(BmpObj), @BmpObj); BitBlt(BackDC, 0,0,BmpObj.bmWidth, BmpObj.bmHeight, FrontDC, 0,0,SRCAND); SelectObject(BackDC, BackInfo.hbmColor); DrawIconEx(BackDC, 0,0,FrontIcon, 0,0,0,0,DI_NORMAL); Result := CreateIconIndirect(BackInfo); SelectObject(FrontDC, FrontSv); DeleteDC(FrontDC); SelectObject(BackDC, BackSv); DeleteDC(BackDC); ReleaseDC(0,WinDC); DeleteObject(FrontInfo.hbmColor); DeleteObject(FrontInfo.hbmMask); DeleteObject(BackInfo.hbmColor); DeleteObject(BackInfo.hbmMask); end; // Remember: The icon created with this function must be destroyed with // DestroyIcon() function when finished using it. Программный код на Delphi, который комбинирует два иконки, аналогично тому, как Windows комбинирует иконки для ссылок (например, маленький стрелка). Код создает новую иконку, overlaying одну иконку на другую. Вот шаг за шагом, что код делает:
Комментарий в конце напоминает пользователю, что созданная иконка должна быть уничтожена с помощью функции В альтернативном решении для современных версий Delphi (XE2 и позднее):
В этом альтернативном решении функция Объединение двух иконок в одну с использованием функции CombineIcons, которая позволяет комбинировать переднюю и заднюю части иконок Windows-стиля с помощью битблита и рисования иконки. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |