加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何扭曲Flex中的图像(或FXG)?

发布时间:2020-12-15 01:45:37 所属栏目:百科 来源:网络整理
导读:我想在Flex中扭曲图像(或FXG). 基本上只想修改图像的边缘,如下图所示.我知道如何做出简单的扭曲,但我找不到这样做的方法. 解决方法 答案是对的……你需要的是一个DisplacementMapFilter !! displaImage通常应该是灰色的 – 意味着没有失真,并为每个下边缘和
我想在Flex中扭曲图像(或FXG).

基本上只想修改图像的边缘,如下图所示.我知道如何做出简单的扭曲,但我找不到这样做的方法.

解决方法

答案是对的……你需要的是一个DisplacementMapFilter !!

displaImage通常应该是灰色的 – >意味着没有失真,并为每个下边缘和上边缘添加白色和灰色的径向渐变,如下所示:

使用地图,您可以这样:

package {
    import flash.display.BitmapData;
    import flash.display.BitmapDataChannel;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.filters.DisplacementMapFilter;
    import flash.filters.DisplacementMapFilterMode;
    import flash.geom.Point;
    import flash.net.URLRequest;

    public class DistortImage extends Sprite
    {

        private var sourceImage:Loader;
        private var distortMap:Loader;

        public function DistortImage()
        {
            super();


        // Loading the Image to be distorted
            sourceImage = new Loader();
            var requ: URLRequest = new URLRequest("text.jpg");
            sourceImage.contentLoaderInfo.addEventListener(Event.COMPLETE,loadMap);
            sourceImage.load(requ);
        }

        private function loadMap( E:Event = null ):void{

        // loading distortion map ( grayscale )
            distortMap = new Loader();
            var requ: URLRequest = new URLRequest("distortMap.jpg");
            distortMap.contentLoaderInfo.addEventListener(Event.COMPLETE,applyDistortion);
            distortMap.load(requ);
        }
        private function applyDistortion( E:Event = null ):void{

        // get jpg as BitmapData
            var bmpData:BitmapData = new BitmapData( distortMap.content.width,distortMap.content.height);
            bmpData.draw(distortMap);

        // create the filter - notice gray(128,128,128) means no distortion white is negative black is positive distortion
            var offsetOfMap:Point = new Point(0,0);
            var redChannelCode:uint = BitmapDataChannel.RED; // is not important cause you just need oneway distortion 
            var yDistortion:int = 20; // strength

            var distortFilter:DisplacementMapFilter = new DisplacementMapFilter(bmpData,offsetOfMap,redChannelCode,yDistortion,DisplacementMapFilterMode.COLOR,0xffffff,0);

        // filters need to be included in an array to add on display Object
            var filters:Array = new Array();
            filters.push(distortFilter);

        // adding filter to image
            sourceImage.filters = filters;
            addChild(sourceImage);
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读