使用Quartz(iOS)进行形状转换

时间:2011-07-07 09:08:25

标签: ios objective-c image-manipulation quartz-graphics

我必须编写一个应该在平面上显示形状的绘图工具。这些形状可以是任意形状,如椭圆形或立方体,也可以是在平面上绘制的一些图形。

我需要做的是,使用位于这些形状周围的标记点,能够通过移动标记来转换它们。因此,假设我有四个标记位于顶部,底部,左侧和右侧,我应该能够通过移动左右标记来水平拉伸形状。

我无法使用形状的几何属性(例如更改椭圆的半径),因为我必须能够在任意形状(如图片)上执行此操作。

我在图像处理算法方面没有太多经验,任何人都可以给我一些从哪里开始的提示?最好的做法是做好它甚至是一个好的算法来做到这一点?

我正在为iOS平台开发。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

以下是您如何在UIImage上绘图

UIGraphicsBeginImageContext(CGSizeMake(width, height)); 
// do your drawing operations
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext();

以下是如何缩放图像

UIGraphicsBeginImageContext(CGSizeMake(scaledWidth, scaledHeight)); 
[image drawInRect:CGRectMake(0,0, scaledWidth, scaledHeight)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext();

您不必分两步完成 - 您可以只绘制每个缩放的项目。这对于非图像绘制会更好。

如果需要绘制CGContextRef,可以使用此

CGContextRef context = [[NSGraphicsContext currentContext] graphicsPort];