`

自定义Button的图片 (位图显示Button)

    博客分类:
  • Flex
阅读更多

comp/MyIconButton.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Button xmlns:fx="http://ns.adobe.com/mxml/2009"
          xmlns:s="library://ns.adobe.com/flex/spark"
          xmlns:mx="library://ns.adobe.com/flex/mx" skinClass="skins.MyIconSkin">
    <fx:Script>
        <![CDATA[
            [Bindable]
            public var icon:Object;
        ]]>
    </fx:Script>
</s:Button>

 skins/MyIconSkin

<?xml version="1.0" encoding="utf-8"?>
<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
             xmlns:fb="http://ns.adobe.com/flashbuilder/2009" minWidth="21" minHeight="21" alpha.disabled="0.5" xmlns:mx="library://ns.adobe.com/flex/mx">
 
    <!-- host component -->
    <fx:Metadata>
        <![CDATA[
        /**
         * @copy spark.skins.spark.ApplicationSkin#hostComponent
         */
        [HostComponent("comp.MyIconButton")]
        ]]>
    </fx:Metadata>
 
    <!-- states -->
    <s:states>
        <s:State name="up" />
        <s:State name="over" />
        <s:State name="down" />
        <s:State name="disabled" />
    </s:states>
 
    <!-- layer 1: shadow -->
    <!--- @private -->
    <s:Rect id="shadow" left="-1" right="-1" top="-1" bottom="-1" radiusX="2">
        <s:fill>
            <s:LinearGradient rotation="90">
                <s:GradientEntry color="0x000000"
                                 color.down="0xFFFFFF"
                                 alpha="0.01"
                                 alpha.down="0" />
                <s:GradientEntry color="0x000000"
                                 color.down="0xFFFFFF"
                                 alpha="0.07"
                                 alpha.down="0.5" />
            </s:LinearGradient>
        </s:fill>
    </s:Rect>
 
    <!-- layer 2: fill -->
    <!--- @private -->
    <s:Rect id="fill" left="1" right="1" top="1" bottom="1" radiusX="2">
        <s:fill>
            <s:LinearGradient rotation="90">
                <s:GradientEntry color="0xFFFFFF"
                                 color.over="0xBBBDBD"
                                 color.down="0xAAAAAA"
                                 alpha="0.85" />
                <s:GradientEntry color="0xD8D8D8"
                                 color.over="0x9FA0A1"
                                 color.down="0x929496"
                                 alpha="0.85" />
            </s:LinearGradient>
        </s:fill>
    </s:Rect>
 
    <!-- layer 3: fill lowlight -->
    <!--- @private -->
    <s:Rect id="lowlight" left="1" right="1" top="1" bottom="1" radiusX="2">
        <s:fill>
            <s:LinearGradient rotation="270">
                <s:GradientEntry color="0x000000" ratio="0.0" alpha="0.0627" />
                <s:GradientEntry color="0x000000" ratio="0.48" alpha="0.0099" />
                <s:GradientEntry color="0x000000" ratio="0.48001" alpha="0" />
            </s:LinearGradient>
        </s:fill>
    </s:Rect>
 
    <!-- layer 4: fill highlight -->
    <!--- @private -->
    <s:Rect id="highlight" left="1" right="1" top="1" bottom="1" radiusX="2">
        <s:fill>
            <s:LinearGradient rotation="90">
                <s:GradientEntry color="0xFFFFFF"
                                 ratio="0.0"
                                 alpha="0.33"
                                 alpha.over="0.22"
                                 alpha.down="0.12"/>
                <s:GradientEntry color="0xFFFFFF"
                                 ratio="0.48"
                                 alpha="0.33"
                                 alpha.over="0.22"
                                 alpha.down="0.12" />
                <s:GradientEntry color="0xFFFFFF"
                                 ratio="0.48001"
                                 alpha="0" />
            </s:LinearGradient>
        </s:fill>
    </s:Rect>
 
    <!-- layer 5: highlight stroke (all states except down) -->
    <!--- @private -->
    <s:Rect id="highlightStroke" left="1" right="1" top="1" bottom="1" radiusX="2" excludeFrom="down">
        <s:stroke>
            <s:LinearGradientStroke rotation="90" weight="1">
                <s:GradientEntry color="0xFFFFFF" alpha.over="0.22" />
                <s:GradientEntry color="0xD8D8D8" alpha.over="0.22" />
            </s:LinearGradientStroke>
        </s:stroke>
    </s:Rect>
 
    <!-- layer 6: highlight stroke (down state only) -->
    <!--- @private -->
    <s:Rect id="hldownstroke1" left="1" right="1" top="1" bottom="1" radiusX="2" includeIn="down">
        <s:stroke>
            <s:LinearGradientStroke rotation="90" weight="1">
                <s:GradientEntry color="0x000000" alpha="0.25" ratio="0.0" />
                <s:GradientEntry color="0x000000" alpha="0.25" ratio="0.001" />
                <s:GradientEntry color="0x000000" alpha="0.07" ratio="0.0011" />
                <s:GradientEntry color="0x000000" alpha="0.07" ratio="0.965" />
                <s:GradientEntry color="0x000000" alpha="0.00" ratio="0.9651" />
            </s:LinearGradientStroke>
        </s:stroke>
    </s:Rect>
    <!--- @private -->
    <s:Rect id="hldownstroke2" left="2" right="2" top="2" bottom="2" radiusX="2" includeIn="down">
        <s:stroke>
            <s:LinearGradientStroke rotation="90" weight="1">
                <s:GradientEntry color="0x000000" alpha="0.09" ratio="0.0" />
                <s:GradientEntry color="0x000000" alpha="0.00" ratio="0.0001" />
            </s:LinearGradientStroke>
        </s:stroke>
    </s:Rect>
 
    <!-- layer 7: border - put on top of the fill so it doesn't disappear when scale is less than 1 -->
    <!--- @private -->
    <s:Rect id="border" left="0" right="0" top="0" bottom="0" width="69" height="20" radiusX="2">
        <s:stroke>
            <s:LinearGradientStroke rotation="90" weight="1">
                <s:GradientEntry color="0x000000"
                                 alpha="0.5625"
                                 alpha.down="0.6375" />
                <s:GradientEntry color="0x000000"
                                 alpha="0.75"
                                 alpha.down="0.85" />
            </s:LinearGradientStroke>
        </s:stroke>
    </s:Rect>
 
    <!-- layer 8: text -->
    <!--- @copy spark.components.supportClasses.ButtonBase#labelDisplay -->
    <s:Label id="labelDisplay"
             textAlign="center"
             verticalAlign="middle"
             maxDisplayedLines="1"
             horizontalCenter="0" verticalCenter="1"
              right="10" top="2" bottom="2" paddingLeft="10">
    </s:Label>
    <mx:Image source="{hostComponent.icon}" left="5" verticalCenter="0" />
</s:SparkSkin>

 ButtonWithIcon.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:comp="comp.*" viewSourceURL="srcview/index.html">
    <s:layout>
        <s:HorizontalLayout horizontalAlign="center" verticalAlign="middle"/>
    </s:layout>
    <comp:MyIconButton icon="@Embed('assets/add.png')" label="BTN 1" />
    <comp:MyIconButton icon="@Embed('assets/alert.png')" label="BTN 2" />
    <comp:MyIconButton icon="@Embed('assets/back.png')" label="BTN 3" />
</s:Application>
 

 

  • 大小: 4.8 KB
分享到:
评论

相关推荐

    C# 5种类型的自定义Button控件合集GDI+自绘精美漂亮的播放器按钮

    在自定义Button控件时,我们可以通过GDI+的方法如DrawRectangle、FillGradientRectangle等来绘制不同形状和颜色的按钮。 2. **播放器按钮** 播放器按钮通常需要有播放、暂停、停止等状态的切换效果。我们可以利用...

    VC 自定义BUTTON 支持PNG 图片 支持透明效果

    VC 自定义BUTTON 支持PNG 图片 支持透明效果。 支持资源和文件2中加载方式 支持文字显示 GDI+双缓冲绘图,无闪烁 经过GID对象泄漏监测,无泄漏 呵呵,DEMO 的名字有点怪,是我计算DLU和像素转换用的。现在直接拿...

    BUTTON控件上显示图片

    然而,标准的BUTTON控件默认只支持显示文本,不直接支持显示图片。本篇将详细介绍如何在VC++中实现在BUTTON控件上显示图片的源码技术。 首先,我们需要了解按钮控件的基本使用。在MFC(Microsoft Foundation ...

    位图BUTTON和椭圆BUTTON

    本项目主要涉及两个自定义控件:位图按钮(Bitmap Button)和椭圆按钮(Ellipse Button)。这两种控件在标准Windows按钮的基础上进行了扩展,提供了更多的功能和美观的设计。 位图按钮是将一个位图图像与按钮控件相...

    C# 自定义位图按钮

    4. **图片样式**:你可以定义图片的显示方式,如填充、拉伸、平铺或居中。通过调整绘制图像时的参数,比如`DrawImage`方法的源矩形和目标矩形,可以实现这些效果。 5. **Button的文字样式**:除了位置,还可以...

    好用的MFC自定义按钮CButton

    2. **设置按钮图标**:使用`SetBitmap`函数可以设置按钮显示的位图图标。 3. **改变按钮样式**:通过调用`ModifyStyle`函数,可以改变按钮的风格,如添加BS_BITMAP、BS_OWNERDRAW等样式,以实现自绘按钮。 4. **响应...

    自定义动画按钮 button VC++

    本项目“自定义动画按钮 button VC++”提供了一种实现方式,它通过创建一个名为CAniButton的类,使按钮不仅具有常规功能,还能以动画的形式展现,增加了用户界面的动态感和趣味性。 首先,我们要理解CAniButton类的...

    自定义动画按钮(Button)的一个简单例子

    在自定义按钮中,我们可以加载DIB图像作为按钮的背景,或者在按钮的不同状态下显示不同的DIB图片,以实现更丰富的视觉效果。加载DIB图像通常会用到LoadImage()函数,然后使用CreateDIBSection()和SelectObject()等...

    Delphi位图按钮BitBtn如何实现按下去显示一张图片,弹起来显示另一张图片.zip

    在Delphi编程环境中,位图按钮(BitBtn)是一个非常实用的组件,它允许开发者将自定义的图像应用到按钮上,以增强用户界面的视觉效果。本话题将详细讲解如何利用BitBtn组件来实现一个功能,即按钮按下时显示一张图片...

    MFC中修改Button控件字体、字体大小、背景色、背景图片

    这里我们关注的是如何修改Button控件的字体、字体大小、背景色以及背景图片。下面将详细阐述这一过程。 首先,我们需要派生一个自定义的Button类,例如`MyButton`,它继承自`CButton`类。在MFC中,`CButton`类是...

    自定义图片按钮

    - 必须确保按钮的样式设置为BS_BITMAP,以便它可以显示位图。 ```cpp BEGIN_MESSAGE_MAP(CColorfulButton, CButton) ON_WM_PAINT() END_MESSAGE_MAP() // 在创建按钮控件时设置样式 CColorfulButton myButton; ...

    点击button按钮切换一个图片

    - 使用`SetBitmap()`函数来更改图片控件显示的位图。例如,如果当前显示`IDB_IMAGE1`,则切换到`IDB_IMAGE2`,反之亦然。 示例代码可能如下: ```cpp void CMyDialog::OnBnClickedButton1() { CStatic* ...

    位图Button 制作

    5. **BkDialogST.cpp**:可能包含了一个自定义对话框类,该类可以拥有背景图片或者位图Button,以提升对话框的视觉效果。 6. **CeXDib.cpp**:CeXDib可能是一个扩展的设备上下文(Device Context)类,用于处理和...

    MFC CToolBar工具栏自定义图片及文字

    自定义按钮图像需要在资源编辑器中创建一个位图资源,其中每个按钮的图像在位图中占一行。使用`CToolBar::SetButtonInfo`函数可以设置按钮的属性,包括ID、样式(如是否显示文本)以及图像索引。如果需要在按钮上...

    【VC编程技巧】控件☞4.1位图Button

    位图Button是一种增强版的按钮控件,它不仅具有普通按钮的基本功能,还能显示自定义的图像,为用户界面增添视觉吸引力。 标题“【VC编程技巧】控件☞4.1位图Button”所提及的知识点,主要集中在如何在MFC应用中为...

    MFC button图片透明

    在这个场景中,"MFC button图片透明"是指如何在MFC应用中让按钮控件加载图片并实现透明效果。这通常涉及到图形设备接口(GDI)和可能的GDI+的使用,以及对窗口消息处理的深入理解。 在MFC中,按钮控件通常是`...

    根据图片实现不规则Button

    在实际开发中,考虑到性能和兼容性,可能还需要考虑使用位图映射(Bitmap Masking)或Alpha通道透明度来实现不规则Button。这种方法利用图片的透明部分定义按钮的形状,减少了计算复杂性,但可能限制了形状的灵活性...

    带位图的Button程序

    本项目“带位图的Button程序”聚焦于如何利用MFC创建具有自定义图形界面的按钮,尤其是使用位图来美化和增强按钮的视觉效果。位图是一种图像格式,可以存储像素信息,通过将位图应用到按钮上,我们可以让按钮显示...

    Button按钮的多种形式,可以给button添加颜色

    自定义位图按钮允许开发者使用图片作为按钮的背景,提高视觉吸引力。在Android中,可以将图片设置为`Button`的背景,或者使用`BitmapDrawable`创建自定义按钮。在iOS中,`UIButton`的`setBackgroundImage(_:for:)`...

    VC & C++ Button

    总的来说,VC++中的Button不仅限于基本样式,通过自定义绘制、位图应用、子控件组合等方式,可以创造出丰富的用户界面。这些技术不仅提升了用户体验,也是专业软件开发中的重要技巧。在实际项目中,根据需求选择合适...

Global site tag (gtag.js) - Google Analytics