Подсветить изображениеDelphi , Графика и Игры , ИзображенияПодсветить изображение
Оформил: DeeCo { Question: Does anyone know of a way that I can achieve the same effect on a bitmap that windows achieves when you single click on an icon on the desktop? In other words, I want to "sorta highlight" a bitmap and let the user know that it's selected. Answer: To me it appears as if the icons on my desktop are highlighted by overlaying them with a certain color, so I guess the following routine is of use. } procedure Highlight(aSource, ATarget: TBitmap; AColor: TColor); //alters ASource to ATarget by making it appear as if //looked through //colored glass as given by AColor //ASource, ATarget must have been created. //Isn't as slow as it looks. //Physics courtesy of a post by K.H. Brenner var i, j: Integer; s, t: pRGBTriple; r, g, b: byte; cl: TColor; begin cl := ColorToRGB(AColor); r := GetRValue(cl); g := GetGValue(cl); b := GetBValue(cl); aSource.PixelFormat := pf24bit; ATarget.PixelFormat := pf24bit; ATarget.Width := aSource.Width; ATarget.Height := aSource.Height; for i := 0 to aSource.Height - 1 do begin s := ASource.Scanline[i]; t := ATarget.Scanline[i]; for j := 0 to aSource.Width - 1 do begin t^.rgbtBlue := (b * s^.rgbtBlue) div 255; t^.rgbtGreen := (g * s^.rgbtGreen) div 255; t^.rgbtRed := (r * s^.rgbtRed) div 255; inc(s); inc(t); end; end; end; Программный код, который я предоставил, - это процедура Delphi, которая выделяет битмап-изображение, наложив на него указанный цвет. Эффект выделивания достигается путем умножения значений RGB каждого пиксела в оригинальном битмапе на соответствующие значения RGB указанного цвета, а затем делением результата на 255. Вот подробное описание, как работает код:
Вот альтернативное решение, использующее более современный подход:
В этом альтернативном решении мы присваиваем оригинальное битмап-изображение Обратите внимание: альтернативное решение предполагает, что компонент В статье описывается алгоритм для подсветки изображения, схожий с эффектом подчеркивания иконок на рабочем столе Windows, при котором слой цвета надкладывается над исходным изображением. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Изображения ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |