`
cuixuxucui
  • 浏览: 351763 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于Degrafa's Fills简介

阅读更多

    Fills are created outside and independent of any shape to make sure they can be repurposed. Each type of fill is declared in between a tag.

1 SolidFill
    Package com.degrafa.paint
    Inheritance DegrafaObject
    Implements IGraphicsFill
    Solid fill defines a fill color to be applied to a graphics contex.

    SolidFill
    <degrafa:Surface verticalCenter="0" horizontalCenter="0">
          <degrafa:fills>
                <paint:SolidFill id="blue" color="#62ABCD" alpha=".6"/>
          </degrafa:fills>
    <degrafa:GeometryGroup> 
    <geometry:Circle fill="{blue}" radius="150"/> 
           </degrafa:GeometryGroup>
    </degrafa:Surface>

2 BlendFill
    Package com.degrafa.paint
    Inheritance DegrafaObject
    Implements IBlend, IGraphicsFill
    Used to wrap standard IFill objects for use in a ComplexFill. The blendMode is only recognized in the context of a ComplexFill.

3 BitmapFill
    Package com.degrafa.paint
    Inheritance DegrafaObject
    Implements IBlend, IGraphicsFill, ITransformablePaint
    Used to fill an area on screen with a bitmap or other DisplayObject.

    BitmapFill
    <degrafa:Surface verticalCenter="0" horizontalCenter="0">
           <degrafa:fills>
                 <paint:BitmapFill id="bitmapFill" source="@Embed   ('assets/pattern_062.gif')" rotation="45" smooth="true"/>
           </degrafa:fills>
           <degrafa:GeometryGroup>
                 <geometry:Circle fill="{bitmapFill}" radius="150"/>  
           </degrafa:GeometryGroup>  
    </degrafa:Surface>
4 LinearGradientFill
    Package com.degrafa.paint
    Inheritance GradientFillBase(Inheritance DegrafaObject)
    Implements IGraphicsFill
    The linear gradient fill class lets you specify a gradient fill.

    LinearFill
    <degrafa:Surface verticalCenter="0" horizontalCenter="0">
          <degrafa:fills>
                <paint:LinearGradientFill id="blueGradient" angle="45">
          <paint:GradientStop alpha=".3" color="#000000"/>
                <paint:GradientStop alpha=".8" color="#FFFFFF"/>
          </paint:LinearGradientFill>
          </degrafa:fills>
          <degrafa:GeometryGroup>
                <geometry:Circle fill="{blueGradient}" radius="150"/>  
          </degrafa:GeometryGroup>
     </degrafa:Surface>
5 RadialGradientFill
    Package com.degrafa.paint
    Inheritance GradientFillBase(Inheritance DegrafaObject)
    Implements IGraphicsFill
    The radial gradient fill class lets you specify a gradient fill that radiates out from the center of a graphical element.

    RadialFill
    <degrafa:Surface verticalCenter="0" horizontalCenter="0">
           <degrafa:fills>
                 <paint:RadialGradientFill id="blueGradient" angle="45" focalPointRatio=".5">
                       <paint:GradientStop alpha=".3" ratio=".5" color="#62ABCD"/>
                       <paint:GradientStop alpha=".8" ratio="1" color="#FFFFFF"/>
                 </paint:RadialGradientFill>
           </degrafa:fills>
           <degrafa:GeometryGroup>
                  <geometry:Circle fill="{blueGradient}" radius="150"/>
           </degrafa:GeometryGroup>  
    </degrafa:Surface>
6 ComplexFill
    Package com.degrafa.paint
    Inheritance DegrafaObject
    Implements IBlend, IGraphicsFill
    Used to render multiple, layered IGraphicsFill objects as a single fill. This allows complex background graphics to be rendered with a single drawing pass.

    ComplexFill
    <degrafa:Surface verticalCenter="0" horizontalCenter="0">
           <degrafa:fills>
                  <paint:ComplexFill id="complexFill">
                        <paint:GradientFillBase angle="45">
                               <paint:GradientStop color="#62ABCD"/>
                               <paint:GradientStop color="#FFFFFF"/>
                         </paint:GradientFillBase>
                         <paint:BlendFill  blendMode="multiply">
                                <paint:BitmapFill source="@Embed('assets/pattern_062.gif')" rotation="45" smooth="true"/>
                         </paint:BlendFill> 
                  </paint:ComplexFill>  
            </degrafa:fills>
            <degrafa:GeometryGroup>
                   <geometry:Circle fill="{complexFill}" radius="150"/>
            </degrafa:GeometryGroup>
    </degrafa:Surface>
7 VectorFill
    Package com.degrafa.paint
    Inheritance DegrafaObject
    Implements IBlend, IGraphicsFill, ITransformablePaint
    Used to fill an area on screen with a bitmap or other DisplayObject.

    What’s VectorFill?
           create a fill using Degrafa markup
           treat it just like a BitmapFill
           no external assets
           easy to make changes

     The focus of Degrafa beta 1 and 2 was to set up a solid core that would allow us to do really innovative things and make really complex things easy to do. We’re also chipping away at the need to have any external graphics referenced in your project. A new feature in Degrafa Beta 3 gets us even closer to meeting these goals.

     This new feature is a new Fill type called VectorFill that is going to change the way you think about what’s possible visually in your applications. VectorFill allows you to compose any Degrafa geometry together and use it as a Fill for any other Degrafa geometry. As a simple example, imagine you wanted a background of diagonal lines. To achieve this with VectorFill all you need to do is draw one diagonal line using Degrafa, specify that Line as a source in a VectorFill, then apply that VectorFill to a Degrafa geometry object using the fill property.

     Just like any other Degrafa object, you could edit that diagonal line, say change a color, and that change will dynamically get updated in the applied VectorFill. Also, when we say you can compose any Degrafa geometry together we mean shapes, transforms, fills, repeaters, strokes, and so on. You could move shapes with in VectorFill to create panning or use VectorFill with the Flex charting components to make really rich visuals. The possibilities are endless.

     We’ve also added additional properties to VectorFill to allow for even more powerful ease of use. You get all the BitmapFill goodness of repeat, scale and angle etc. You also get the recently revealed fill transform features as well. And you also get filters, autosettings, background SolidFill and the ability to clip the fill source geometry based on a third geometry object (or even part of composition).
      ------Degrafa Beta 3 Preview: VectorFill

在VectorFill使用Path填充SVG组合而成的GeometryComposition

  VectorFill并不是像其名字翻译的那样,填充的是放大不失真的矢量图形。它只是允许通过source引用各种geometry组合而成的GeometryComposition,比如DEMO里组合了Line,RegularRectangle,Circle,Path。我们完全可以把它当作特殊的BitmapFill来对待。所以,以<degrafa:Path data="M0,25,Q12.5,37.5,25,25,M25,25,Q37.5,12.5,50,25" stroke="{blackstroke}"/>这种形式填充GeometryComposition而成的VectorFill,虽然其初衷是利用SVG矢量图形达到放大不失真,但很显然并不能达到想要的效果。

  当然,我们可以用另一种方式来达到这个目的。那就是解析PATH中data所指向的字符串,将所有的数字乘以要放大的倍数scale。在局部应用中,这个效果看起来很让人振奋,因为无论怎样放大图形都不会失真。但考虑到其算法执行效率,并不能在大规模的页面填充中使用。相关函数及使用的SVG文件请参见sign05.rar

使用ActionScript而不是MXML标签来实例化Fills 

      在填充一个图形时,如果需要根据业务逻辑动态加载FillS,MXML标签就无法办到了。这时需要使用ActionScript函数来实现,以bitmapFill为例:

   <mx:Script>
            <![CDATA[
                    import com.degrafa.Surface;
                    import com.degrafa.GeometryGroup;
                    import com.degrafa.paint.BitmapFill;
                    import com.degrafa.paint.SolidStroke;
                    import com.degrafa.geometry.RegularRectangle;
                    [Embed(source="assets/wellfill/yuan.jpg")]
                    private static const Yuan:Class;
   
                    public function Init():void
                    {
                          var redStroke:SolidStroke = new SolidStroke;
                          redStroke.color = "#ff0000";
                          redStroke.weight = 1;

                          var bitmapFill:BitmapFill=new BitmapFill();
                          bitmapFill.source=new Yuan().bitmapData;
    
                          var recc:RegularRectangle = new RegularRectangle(0,0,250,250);
                          recc.stroke = redStroke;    
                          recc.fill=bitmapFill;
    
                          var gg:GeometryGroup=new GeometryGroup();

                          //不是普通的gg.addChild()
                          gg.geometryCollection.addItem(recc);
    
                          var surface:Surface= new Surface();

                          //注意下面这句不可少
                          gg.target=surface;
                          surface.addChild(gg);
    
                          addChild(surface);
                    }
            ]]>
    </mx:Script>

 

  • degrafaFill.zip (743.6 KB)
  • 描述: 可直接IMPORT FLEX PROJECT运行
  • 下载次数: 87
  • sign05.rar (3 KB)
  • 描述: 只有一个sign05.mxml,需要加入其它FLEX工程使用
  • 下载次数: 43
分享到:
评论

相关推荐

    关于DEGRAFA的简介

    DEGRAFA,全称为“基于SVG的矢量图形绘制框架”,是一个开源的、基于SVG(Scalable Vector Graphics)标准的图形绘制工具包,主要应用于Java平台。它为开发者提供了丰富的API,使得在Java应用程序中创建、编辑和展示...

    Degrafa帮助文档

    all-index-开头的HTML文件,如S、D、C、G、R、P、A等,可能是索引页面,按字母顺序分类 Degrafa 的各种概念、类或方法,方便用户快速查找和导航。class-summary.html 可能是类摘要页面,提供 Degrafa 库中主要类的...

    Degrafa3.1源码

    关于“两个工程依赖关系”,这可能意味着源码包中包含两个不同的Flex项目,每个项目可能分别负责地图的生成和地图的交互功能。一个可能包含地图的基本结构和样式,另一个则专注于处理用户交互,如点击事件、区域高亮...

    degrafa 的帮助文档

    flex开发的画图框架Degrafa 近来需在flex画些简单的图形,根据朋友推荐使用了Degrafa,但是官方没有提供离线的文档下载,于是自己制作了一下。 文档的所有版权均属http://www.degrafa.com 详细情况请查看degrafa的...

    Degrafa画矢量曲线

    Degrafa是一款强大的图形绘制库,专用于在JavaFX平台上创建复杂的矢量图形。它提供了一个灵活的声明式模型,使开发者能够轻松地定义和操纵矢量图形,类似于SVG(可缩放矢量图形)标准。这篇博文"Degrafa画矢量曲线...

    Degrafa.CHM

    flex开发的画图框架Degrafa 近来需在flex画些简单的图形,根据朋友推荐使用了Degrafa,但是官方没有提供离线的文档下载,于是自己制作了一下。 文档的所有版权均属http://www.degrafa.com 详细情况请查看degrafa的...

    degrafa绘图工具 svg操作

    DeGrafa是一款强大的开源绘图工具,专为创建和编辑SVG(Scalable Vector Graphics)图形而设计。SVG是一种基于XML的矢量图像格式,它允许开发者创建清晰、高质量的图形,无论放大多少倍都不会失真,广泛应用于网页...

    Degrafa学习一,(含SDK4.0兼容版本及源码,略微有所修改)

    Degrafa是一个图形化开发框架,它主要用于创建2D图形应用程序,特别是在Swing或JavaFX平台上。这个资源包包括了SDK的4.0兼容版本,这意味着你可以利用这个框架来开发与Java SDK 4.0相适应的应用。"含SDK4.0兼容版本...

    Degrafa(Beta3)

    Degrafa是一款强大的图形化开发框架,主要用于创建2D矢量图形和交互式应用程序。它在Beta3版本中提供了一些先进的特性和改进,为开发者带来了更丰富的功能和更好的用户体验。这款开源工具允许开发者通过编程方式设计...

    SvgToDegrafa.rar_SvgToDegrafa_degrafa_flex

    2. ** Degrafa图形API**: Degrafa 提供了一系列的图形类,如PathElement、Group、Shape等,可以创建和操作矢量图形。你需要把这些解析出来的SVG数据映射到 Degrafa 对象上,比如将SVG路径数据转化为PathElement对象...

    深入SVG路径~~~在DEGRAFA中使用PATH

    主要的命令包括M(移动到)、L(直线到)、H(水平线到)、V(垂直线到)、C(三次贝塞尔曲线到)、S(光滑三次贝塞尔曲线到)、Q(二次贝塞尔曲线到)、T(光滑二次贝塞尔曲线到)、A(椭圆弧线)和Z(闭合路径)。...

    degrafa源代码

    Degrafa扩展就是在FLEX中增加了对矢量数据的动态处理,包括动态添加,删除和修改,并支持SVG的路径格式数据, 因此只需要对现有的SVG数据进行一些必要的转换(以后会有工具支持,但现在只能手工完成),就可以将SVG...

    一个隐藏式的登录窗口

    使用了“shade”和“degrafa”,这两个是ActionScript和Flex开发中的图形库和框架。 “shade”是一个图形效果库,它提供了丰富的视觉特效,如阴影、渐变、模糊等,可以用来增强用户界面的立体感和动态效果,使登录...

    degrafaFlex4.SWC

    基于Actionscript3.0,强大的矢量图形绘制类库

    flex图形报表控件源代码

    这里是源代码,但需要借助另外的开源框架Degrafa。我用的是Degrafaflex4.swf。 这里我直接将degrafaflex4.swf和birdeye本身自己写的vis打成一个swf文件。即birdeyelib.swf。 做图形报表框架直接用birdeyelib.swf即可...

    flex3做的流程图

    在Flex3中, Degrafa是一个图形库,专为创建复杂的矢量图形和图表而设计,尤其适用于制作流程图。 流程图是表示工作流程或系统操作过程的图形表示法,它通过标准化的图形符号来展示步骤和决策点。在Flex3中,利用 ...

    flex svg代码生成图片

    以下是关于 Flex SVG 代码生成图片的知识点: 一、静态显示 SVG 图像 在 Flex 应用程序中,可以使用 SVG 资源,但只能作为一种图像引入,类似于 JPG 和 GIF 图像,而不能使用 SVG 的一些高级特性。这种方式只能在...

Global site tag (gtag.js) - Google Analytics