On Oct 21, 2010, at 10:56 AM, Rimas M. wrote:

> Hello list,
> 
> I do not have a lot of practice with Core Animation, maybe that is the
> reason. I have a real annoying problem.
> 
> All I want to do is:
> 1. Create CALayer
> 2. Set CGImage for its content
> 3. Depending on situation rotate and zoom in that layer (or its content)
> 
> Looks like everything works, but I am getting "rotated" pixels
> (http://dl.dropbox.com/u/2030721/ForAppleList/Rotated%20Pixels.png).
> That is not what I want. I would like to get rotated content of image
> with "straight" pixels.
> 
> I was trying to play with layer transform property, with layer
> delegate "- (void)drawLayer:(CALayer *)layer
> inContext:(CGContextRef)ctx" and by using CGContextRotateCTM etc.
> I have even tried to use layer and sublayer to split transforms (one
> layer scales, and other rotates) but result is always the same.
> Is there any way to achieve result I want? Currently the only way I know is:
> a) to rotate an image by drawing it to the bitmap context
> b) create new rotated CGImage from it
> c) and then draw it for scaling.
> 
> But this way is quite slow. Is there a better one?
> 
> Any help is very appreciate.

- You should add your new layer as a sublayer to the layer of the 
view-controller's view - or as a sublayer to any other layer than the 
controller view's layer.

- Usually, you "draw" the contents only once. However, when you set an *image* 
via the layers's contents property, you don't need to explicitly draw the layer 
- the layer draws the image for you, when it is required. So, just set the 
image as the layer's contents.

- You can scale/zoom the layers's contents by setting the layer's transform 
property accordingly. This uses Core Animation, which executes - if possible - 
on the GPU, and is therefore the fastest method. Note, this doesn't require the 
image to be "drawn" again (it requires "rendering").
You can create a suitable transform which scales AND zooms at once.

- A CALayer's properties are "animatable" (see Core Animation). In fact, 
changes in properties are animated by default. But you can define any 
animation, and CA nicely performs them for you.

- Using Core Graphics functions is *usually* not as fast as Core Animation (if 
a CA alternative exists). But certainly, CG has its use. So, if you want to 
scale and zoom interactively, use CA. 

Regarding transforms, see also:
CATransform3DMakeRotation, CATransform3DMakeScale, CATransform3DConcat


Regards,

Andreas


> 
> Best Regards,
> 
> Rimas M.
> _______________________________________________
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/agrosam%40onlinehome.de
> 
> This email sent to agro...@onlinehome.de

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to