2013-03-27 63 views
0

请帮我ㅠㅠFLEX:调整图像大小后,imageRotate无法正常工作

我正在制作ImageEditor。但我有一个图像旋转功能的问题。

当我加载图像,然后旋转它,旋转功能工作得很好。

但调整大小(宽,高)加载图片后,旋转工作可笑...

Pixed图像的宽度,高度,它只能旋转图片的内容..

其结果是,图像质量去down ...

这是一个屏幕截图。

哦..我不能发布图片..因为声誉限制...: - <

http://blog.naver.com/hago89n/150164439917

请访问我的博客,并确认截图..

你能理解我问题?

嗯..代码是在这里

//调整按钮单击处理

private function btn_resize_clickHandler(event:MouseEvent):void 
{ 
     image.width = parseInt(ti_width.text.toString()); 
    image.height = parseInt(ti_height.text.toString()); 
} 

//旋转按钮单击处理

private function btn_rotateCCW_clickHandler(event:MouseEvent):void 
{//Rotate Counter ClockWise 
    var o_rotateimage:RotateImage = new RotateImage(); 
    o_rotateimage.rotateCCW(image); 
} 

//旋转功能RotateImage.as

public function rotateCCW(image:Image):void 
{ 
    m = new Matrix();  
    m.rotate(Math.PI/2); 
    m.tx = image.height; 
    var bd:BitmapData = new BitmapData(image.height as int, image.width as int); 
    bd.draw(image, m); 
    image.source = new Bitmap(bd); 
} 
+0

嗨,我不知道我明白你的问题很好。看看我的例子。这是你想要的吗? http://it-skills.su/sosamples/webspark46/imageeditor/SO_ImageEditor.html – Anton 2013-03-31 23:34:02

回答

0

我认为你应该为两个操作做一个矩阵变换。 如果你只是改变你的图像对象的大小,它在任何情况下都不能正常工作。

这里是我的代码this的例子。

//应用

<?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"> 

<fx:Script> 
    <![CDATA[ 
     import com.imageeditor.RotateImage; 

     [Embed(source="/assets/img/chart.png")] 
     [Bindable] 
     public var chartPng:Class; 

     private var o_rotateimage:RotateImage = new RotateImage(); 

     private function btn_resize_clickHandler(event:MouseEvent):void 
     { 
      o_rotateimage.scale(image, int(ti_width.text)/image.width, int(ti_height.text)/image.height); 
     } 

     private function btn_rotateCCW_clickHandler(event:MouseEvent):void 
     { 
      o_rotateimage.rotateCCW(image); 
     } 
    ]]> 
</fx:Script> 

<s:VGroup x="10" y="10"> 
    <s:HGroup> 
     <s:TextInput id="ti_width" text="300" width="40"/> 
     <s:TextInput id="ti_height" text="200" width="40"/> 

     <s:Button label="Resize" click="btn_resize_clickHandler(event)"/> 
     <s:Button label="Rotate" click="btn_rotateCCW_clickHandler(event)"/> 
    </s:HGroup> 
    <s:HGroup width="800" height="600" horizontalAlign="center" verticalAlign="middle"> 
     <s:Image id="image" source="{chartPng}" width="600" height="400"/> 
    </s:HGroup> 

</s:VGroup> 
</s:Application> 

//RotateImage.as

package com.imageeditor 
{ 
import flash.display.Bitmap; 
import flash.display.BitmapData; 
import flash.geom.Matrix; 

import spark.components.Image; 

public class RotateImage 
{ 
    private var m:Matrix; 

    public function rotateCCW(image:Image):void 
    { 
     var w:int = image.width; 
     var h:int = image.height; 

     m = new Matrix();  
     m.rotate(Math.PI/2); 
     m.tx = image.height; 
     var bd:BitmapData = new BitmapData(image.height as int, image.width as int); 
     bd.draw(image, m); 

     image.width = h; 
     image.height = w; 

     image.source = new Bitmap(bd); 
    } 

    public function scale(image:Image, kx:Number, ky:Number):void 
    { 
     var w:int = image.width; 
     var h:int = image.height; 

     m = new Matrix(); 
     m.scale(kx, ky); 

     var bd:BitmapData = new BitmapData(w*kx as int, h*ky as int); 
     bd.draw(image, m); 

     image.width = w*kx; 
     image.height = h*ky; 

     image.source = new Bitmap(bd); 
    } 
} 
} 
+0

thanx !!!你是我的天使! – phalanx89 2013-04-04 04:33:00

相关问题