• 消除文本锯齿


      如果文本的字体稍微大些或显示器分辨率较低,就会看到文本的边缘有锯齿。当我们想要消除文本的锯齿时,可能会找到Textfield类里有一个antiAliasType属性,该属性用于此文本字段的消除锯齿类型。但该死的是该属性仅在字体为嵌入(即 embedFonts 属性设置为 true)时可以控制此设置。也就是说如果我们要用到antiAliasType来消除锯齿,就一定要用到嵌套字体。好吧,蛤如果将字体嵌套进去的话又有一个不可避免的问题,就是所嵌套的字体的体积如果过大会影响生成swf的体积,如果只选择一些字体就不灵活。不知为什么要用嵌套字体才能消除锯齿,嵌套字体和消除锯齿为什么不能分开呢?反正我是不好理解,相信也有很多人不好理解为什么要这么做。

      还有如果对字体的锯齿处理效果要求不过高的话,可以为文本添加模糊滤镜。这样锯齿看起来就不那么尖锐,看起来效果会好些。在设置模糊滤镜时自己调一下滤镜模糊度已达到好的效果。

      下面程序是利用添加模糊濾鏡淡化了鋸齒

    package com.flash.UI.Util
    {
        import flash.display.DisplayObject;
        import flash.filters.BlurFilter;
        import flash.text.TextField;
    
        public class TextBlurFilter
        {
            public function TextBlurFilter()
            {
            }
            
            public static function GetTextBlurFilter(fontSize:Number):BlurFilter{
                var blurX:Number=0;
                var blurY:Number=0;
                if(fontSize<10) return null;
                if(fontSize<12){
                    blurX=blurY=1.2;
                }else if(fontSize<16){
                    blurX=blurY=1.2;
                }else if(fontSize<22){
                    blurX=blurY=1.25;
                }else if(fontSize<26){
                    blurX=blurY=1.35;
                }else{
                    blurX=blurY=1.45;
                }
                var blur:BlurFilter=new BlurFilter();
                blur.blurX=blurX;
                blur.blurY=blurY;
                blur.quality=1;
                return blur;
            }
            
            public static function SetTextBlurFilter(target:DisplayObject,fontSize:Number):void{
                var blur:BlurFilter=TextBlurFilter.GetTextBlurFilter(Number(fontSize));
                var flag:Boolean=false;
                if(blur!=null){
                    var filters:Array=target.filters;
                    if(filters==null){
                        filters=new Array();
                        filters.push(blur);
                    }else{
                        for (var i:uint = 0; i < filters.length; i++) {
                            if (filters[i] is BlurFilter) {
                                filters[i]=blur;
                                flag=true;
                                break;
                            }
                        }
                        if(!flag){
                            filters.push(blur);    
                        }
                    }
                    
                    target.filters=filters;
                }
            }
        }
    }
  • 相关阅读:
    C语言学习趣事_BT_C_Code_混乱编程代码分析_1
    随想系列_6_终于被我发现Microsoft的一个错误了
    C语言学习趣事_经典面试题系列_2
    C++_系列自学课程_第_2_课_牛刀小试
    PLC_自动化控制系统_1_简说自动化控制系统
    随想系列_5_乱七八糟
    Android Handler使用
    Android Layout 布局属性
    MotionEvent事件在onInterceptTouchEvent()、onTouchEvent()中的传递顺序【转】
    AndroidMenifest 有关SdkVersion 说明
  • 原文地址:https://www.cnblogs.com/skybdemq/p/2498368.html
Copyright © 2020-2023  润新知