Вверх ↑
Пакеты 
HiAsm4
Windows 
Компоненты 
Гpaфикa 
Фильтры - Glow

Glow
Краткое описание
   Компонент предназначен для получения эффекта свечения заданного изображения
Параметры
  • Level - Уровень свечения
  • Background - Цвет фона исходной картинки, для которого не вычисляется карта свечения
  • Методы
  • doGlow - Формирует карту свечения и применяет ее к картинки
  • События
  • onResult - Событие происходит после выполнения операции и выдаёт в поток её результат ARG(Bitmap)
  • Свойства
  • Result - Содержит измененную картинку
  • Данные
  • Bitmap - Определяет картинку для применения к ней эффекта
  • Примеры
       Простой пример использования эффекта подсвечивания для выделения иконок на кнопках при их нажатии

    Add(MainForm,13098626,63,84)
    {
    Caption="Пример использования Glow"
    Point(Handle)
    link(onCreate,8184193:doLoad,[])
    }
    Add(ImageLoader,8184193,154,98)
    {
    FileName="c:\\Program Files\\HiAsm\\Int\\about.jpg"
    DrawSource=2
    link(onLoad,8184193:doDraw,[(198,104)(198,88)(142,88)(142,111)])
    link(onDraw,9860787:doLoad,[])
    }
    Add(Image,9860787,238,105)
    {
    Left=30
    Width=330
    Height=95
    }
    Add(Image,16471886,238,161)
    {
    Left=30
    Top=165
    Width=330
    Height=105
    }
    Add(Button,3717558,63,161)
    {
    Left=170
    Top=120
    link(onClick,6378366:doGamma,[])
    }
    Add(Gamma,6378366,154,161)
    {
    Level=90
    link(onResult,16471886:doLoad,[])
    link(Bitmap,9860787:ImageBitmap,[(160,149)(244,149)])
    }


    Add(MainForm,2953706,91,105)
    {
    Width=347
    Height=97
    Caption="Click to any image"
    link(onCreate,14291898:doEvent1,[])
    }
    Add(ChildPanelEx,14017833,245,126)
    {
    Mode=1
    link(Bitmap,2991197:Bitmap,[])
    }
    BEGIN_SDK
    Add(EditMultiEx,10866702,21,21)
    {
    WorkCount=#5:##add|
    DataCount=#6:Bitmap|
    Width=230
    Height=165
    Point(##add)
    link(##add,14180953:doWork2,[(52,27)(52,132)])
    }
    Add(Panel,11708775,56,140)
    {
    Left=20
    Top=15
    Width=43
    Height=42
    Layout="parent.tools"
    BevelInner=0
    }
    Add(Image,10421666,98,70)
    {
    Left=1
    Top=1
    Width=41
    Height=40
    Align=5
    HeightScale=50
    ViewStyle=0
    MouseCapture=0
    Point(onMouseDown)
    Point(onMouseUp)
    Point(onDblClick)
    link(onMouseDown,11321897:doWork2,[])
    link(onMouseUp,14180953:doWork1,[(144,90)])
    link(onDblClick,11321897:doWork3,[(151,97)])
    }
    Add(Glow,3653207,189,77)
    {
    Level=2
    Background=-16777201
    link(onResult,14063374:doWork2,[])
    link(Bitmap,15486707:Var3,[(195,51)])
    }
    Add(DoData,16674847,161,126)
    {
    link(onEventData,14063374:doWork3,[(235,132)])
    link(Data,15486707:Var2,[])
    }
    Add(GetDataEx,15486707,154,42)
    {
    Angle=3
    link(Data,10866702:Bitmap,[(27,51)])
    }
    Add(HubEx,14180953,140,119)
    {
    link(onEvent,16674847:doData,[])
    }
    Add(HubEx,14063374,231,70)
    {
    Angle=3
    link(onEvent,10421666:doLoad,[(235,62)(86,62)(86,76)])
    }
    Add(HubEx,11321897,147,70)
    {
    link(onEvent,3653207:doGlow,[])
    }
    END_SDK
    Add(Icon,4134662,189,77)
    {
    Icon=[ZIPBE08000078DAED967B50D45514C73FCB6F7914C64379AC26684982C5B308374C17417CA006B9228A206F1095C702B2BC5FCBA2F94A334DB34C530309B30C04CD07E2403A1A3A36A133369385394E4530820D336ADB5DCB7018B47FEABFCE6FCEEFCEDCCF7CCF39F777CFBDF3039978C68E45BC2DA8B10007C04DB89822803FE78D562667482B28CE67E9F2148E1E3B4A8E369BB4CC15C427C5B3246E0955ABF454E82B28292FA1B0B4106DA1968CAC74D23569A4A426139B104B744C3491518B8858B48094941474AB2A29AFACA0B8AC84BCC23CB273B3C9CCC92465593289C909A8C3D584CD0B232B3B1BFDDA2A74AB2B29D195A22DD092959BC5B2B454E686CE25644E081A8D86AA357A11B382B2CA528ACA8B589997C38C99D399161C444C4C0CC5624E5B90CBD4C000264F998CFF247FAAAAAAE8B8DC417F7F3FD5FB6B98A89C48585818D5B535E417E589BAB4F8FAFAE2E3E343E4E248BA6FF5D0D07418D5D4002C8759327294824B5F5F62FB8EEDC4C7C75377A00EB7096E383939D179E33AEB376E6096A8CFC97934C1C1C19C3F7F0E5757576C6D6C914B12D73ABF273D339DF005E1F4DDEEA5FD423BC5C5C5787B7BE3E2E2828DB50D8E760E483213B13FB06EC33ABEB9D2C1C2C885646832B873F70E9BB76C664A800A0B0B0B626263F8AAFD3C35622D139E9F80A3A32366A666D88DB0432693B173D74E2E5CBA486050203ABD8E9FBA7E16EB2C203434945FBABBF8EE876BD41D3C8087BB3B0A85023B3B3BE4723992A835372F9743F5873873EE2CEE1EEE6CDDB69584A444929293B8DDFF1B5F9E3DC3087B3BCE88B1425781D25F89B5B535E6E6E6989999D1D27A9ADABA5A66CD0EA140E4ACACD21328F6C6DEC19ED6D6563C3C3DB0B2B242924BECABDEC7B193C7693CD288A79727E919E9444547D171E5327ABD1E67676763C3622ED65CDFD4C0F51B3F52DFD8C059519B7ABE9A5BE25BEEDEB31BB55A8DED705B4EB5B5D0DBDB2BF41DF8FBFB9399994950501036B6361C6F39C15E91AFF37A2711111174777773F3E64D542A153D3D3D34B734D3D7D747FBC576AE7E7B95AEAE2E0C0603FFDB7F66CAA67FE0858FE7A7F73F3E74CBFB8FE4CDC6D0A7363D527AC218FAA44E3D04FFC2283D660C5D917D7C08E911A354B7690E64251C25F561FE99517AE8BE54F739C4E7D7371C1EA08DE23C8BA1D6585556F6C7F076DD814F0E0EF04F49304A77EA3E10D2845DB03BF0C33D7B35FB3EFA8B578BAC62782B7BB390AEDEB2F51D9552B96DFBBB9A52CD8EFBFC3D91B512F40955B06AF51B896B82D72AD78D5FBF21FDCD8D1A238F1759736065AE16F2F20B0A6D878F70721EEFEA59545C525A2678B9C89A88B8085296A62E5BAE5CF1807BBD94969E911917A7C16F41042C5C14B938EAB9A747DB0C70DF97A397C4C4C6E137F7B5D0B0D795CA79A683B9BF4A3D3F1CBFC0A069C1D36728670EE6B3425401B3E7E0A754BEEA33798A7CD410FA80A9127E1395AFF8C85E1C8A4F12571BE2B27C61688E74FF1309EE6E39CE6310F796A4077B30F699672DC7C95D1EE66E480FEFB1BD83A362E428D3077C8C240D6EA0279EB41CF69495B591DB210DD5823299DCD4C4CCDC42921ED5BF32998909D2BF7D200D7F5BA9C1F0BBEA4FFF55789BCA704F787FDB18439370459BF53D458BF95D458B4C38458A00460B971BFF2C2C862856B8243AC84BB8AA1913430F92E12E5EE27615B15B06B2FE017F48C75D]
    Transparent=-16777201
    Point(doBitmap)
    Point(onBitmap)
    link(onBitmap,2991197:doLoad,[])
    }
    Add(ToolBarLayout,9113861,245,168)
    {
    Name="tools"
    AutoSize=0
    }
    Add(Bitmap,2991197,245,77)
    {
    }
    Add(Hub,14291898,147,119)
    {
    link(onEvent1,4134662:doBitmap,[(175,125)(175,97)])
    link(onEvent2,13856942:doFor,[])
    }
    Add(For,13856942,189,126)
    {
    End=10
    link(onEvent,14017833:##add,[])
    link(onStop,9113861:doResize,[(233,139)(233,174)])
    }
    Замечания
       Расчет областей свечения производится достаточно просто. На первом шаге на основе исходного изображения строится инверсная маска светимости каждого пикселя изображения по формуле Gxy = 255 - (Rxy + Gxy + Bxy) div 3. На втором шаге карта свечения применяется к исходному изображению по формуле для каждого пикселя Pxyc = MIN( Gxy/Level + Pxyc), 255), где Pxyc - одна из компонент цвета исходного изображения.

    Обновление элемента: [svn]Glow.pas[/svn]
    BB-code статьи для вставки
    Всего комментариев: 0
    (комментарии к статье еще не добавлены)
    Комментарий
    ...