2009-12-03 6 views
1

Donc, J'ai bitmapA qui est rectangulaire. J'ai une zone de recadrage que je veux copier ...as3 copier une forme personnalisée en bitmap

Cependant, le bitmap est à un certain angle du recadrage. Comment puis-je copier une section à partir d'un bitmap qui n'est pas un rectangle situé sur l'axe x, y, ???

Ou copier une forme personnalisée ????

Merci

Répondre

0

façon la plus simple que je peux penser à le faire est d'obtenir un bitmap temporaire et utiliser la méthode draw pour dupliquer le bitmap d'angle, puis tronquer dans de cela. pas le plus de mémoire efficace, mais devrait fonctionner.

5

Si vous devez recadrer un rectangle avec rotation, vous pouvez utiliser draw méthode suggérée par Bâtoncourt pour rogner la zone rouge comme indiqué ci-dessous:

alt text http://axly.org/_tmp/stackoverflow/crop_sample.png

var crop_rect:Rectangle = new Rectangle(0,0,64,57);//size of the segment to copy 
var crop_point:Point = new Point(40,50);//relative position of the crop from the top/left corner of the image 
var crop_angle:Number = Math.PI/12;//angle of the crop relative to image in radians (clockwise) 

//transformation [tx,ty] parameters representing shift after rotation 
var dA:Number = Math.atan(crop_point.y/crop_point.x) - crop_angle; 
var tX:Number = crop_point.length * Math.cos(dA); 
var tY:Number = crop_point.length * Math.sin(dA); 

var scaleMatrix:Matrix = new Matrix(Math.cos(- crop_angle),Math.sin(- crop_angle), - Math.sin(- crop_angle),Math.cos(- crop_angle), - tX, - tY); 
var colorTransform:ColorTransform = new ColorTransform();//no colour transformation needed 

//copy selected segment after rotation and shift to match the size of the crop 
var result_bitmap = new BitmapData(crop_rect.width,crop_rect.height); 
result_bitmap.draw(source_img, scaleMatrix , colorTransform, null, crop_rect, true); 
var result_img:Bitmap = new Bitmap(result_bitmap); 

Le résultat est au-dessous : alt text http://axly.org/_tmp/stackoverflow/crop_result.png Espérons que c'est ce que vous cherchiez, sinon donnez plus de détails et, mieux encore, un échantillon visuel.

Questions connexes