Tag: 核心graphics

返回CATransform3D以将四边形映射到四边形

我试图派生一个CATransform3D,它将一个带有4个angular点的四边形映射到另外一个带有4个新angular点的四边形。 我花了一点时间研究这个问题,看起来步骤包括将原来的Quad转换为Square,然后将Square转换为新的Quad。 我的方法是这样的(从这里借用的代码): – (CATransform3D)quadFromSquare_x0:(float)x0 y0:(float)y0 x1:(float)x1 y1:(float)y1 x2:(float)x2 y2:(float)y2 x3:(float)x3 y3:(float)y3 { float dx1 = x1 – x2, dy1 = y1 – y2; float dx2 = x3 – x2, dy2 = y3 – y2; float sx = x0 – x1 + x2 – x3; float sy = y0 – y1 + y2 – y3; […]

iOS:完整的360度旋转使用块,而不是CABasicAnimation

这应该是非常简单的事情,但我没有成功地使用块来实现这个function。 这里有一些问题和答案,但是我发现所有这些都是通过使用CABasicAnimation而不是UIView基于块的animation来解决的,而这正是我所追求的。 下面的代码不起作用(基于块),没有animation: CGAffineTransform spin = CGAffineTransformRotate(spiningView.transform, DEGREES_RADIANS(360)); CATransform3D identity = CATransform3DIdentity; CATransform3D spin2 = CATransform3DRotate(identity, DEGREES_RADIANS(360), 0.0f, 0.0f, 1.0f); [UIView animateWithDuration:3.0f delay:0.0f options:UIViewAnimationOptionCurveLinear animations:^ { spiningView.transform = spin; //spiningView.layer.transform = spin2; //Have also tried the above, doesn't work either. } completion:^(BOOL finished) { spiningView.transform = spin; //spiningView.layer.transform = spin2; }]; 根据我的理解,当我们每次使用基于块的时候,都不会发生animation,当UIViewAnimation Block“看到”开始值和最终值相同时。 公平的说,把它设置成360度就意味着对象停留在原来的位置。 但它必须是一种使用基于块的animation来制作这个animation的方法,因为下面的CABasicAnimation可以完美地工作: […]

iOS中的四点渐变

我打算创build一个四点梯度,如下图所示,绘制两个线性渐变通过核心graphics和掩盖他们之间的第三个黑色和白色的线性渐变。 有没有更有效的方法来使用核心graphics或其他绘制四点渐变?

iOS iPhone有可能克隆UIView,并让它自己绘制到两个UIViews?

我正在想办法让一个UIView呈现到另一个UIView以及第一个。 所以我有我的主UIView的界限,和UIView也呈现自己在其他一些UIView。 这可能吗 ? 是否需要广泛的图层操作?

CG Gradient在模拟器上运行,但不在iPhone上运行

我有一个编译没有问题的代码。 它在iPhone模拟器上运行良好,但在我的设备上,我得到了一个EXC_BAD_ACCESS。 这发生在一个帮助函数绘制渐变。 我遵循这个教程来做到这一点。 我有的代码如下: – (void) drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGColorRef whiteColor = [UIColor whiteColor].CGColor; CGColorRef lightGrayColor = [UIColor colorWithRed:230.0/255.0 green:230.0/255.0 blue:230.0/255.0 alpha:1.0].CGColor; CGColorRef separatorColor = [UIColor colorWithRed:208.0/255.0 green:208.0/255.0 blue:208.0/255.0 alpha:1.0].CGColor; CGRect paperRect = self.bounds; CGRect nameRect = self.nameLabel.frame; CGPoint sepStartPoint = CGPointMake(nameRect.origin.x, nameRect.origin.x + nameRect.size.height + 2); CGPoint sepEndPoint = CGPointMake(nameRect.origin.x […]

在后台线程解码图像?

我有一个后台线程加载图像,并显示在主线程中。 我注意到后台线程几乎没有任何关系,因为实际的图像解码似乎是在主线程中完成的: 到目前为止,我已经尝试在后台线程中调用[UIImage imageNamed:] , [UIImage imageWithData:]和CGImageCreateWithJPEGDataProvider ,没有区别。 有没有办法强制解码在后台线程上完成? 这里已经有类似的问题 ,但是没有帮助。 正如我在那里写的,我尝试了以下技巧: @implementation UIImage (Loading) – (void) forceLoad { const CGImageRef cgImage = [self CGImage]; const int width = CGImageGetWidth(cgImage); const int height = CGImageGetHeight(cgImage); const CGColorSpaceRef colorspace = CGImageGetColorSpace(cgImage); const CGContextRef context = CGBitmapContextCreate( NULL, /* Where to store the data. NULL = don't […]

如何合并两个UIImage?

我试图合并两个不同的图像,并创build一个新的。 这是我想要做的方式:我有这样的形象(A): 这是一个PNG图像,我想将这个与另一个图像(B)合并,我从手机中拿出来创build这样的图像: 我需要一个将A与B合并的function.C尺寸必须保留在A图像上,而图像B应该自动调整尺寸以适合宝丽来(A)。 有没有可能做到这一点? 感谢您的帮助! 更新只是一件事,图像(A)是一个正方形,我采取的图像是16:9,我该如何解决? 如果我使用你的function,我所拍摄的图像(B)变得拉长了!

iOS:将RGB滤镜应用于灰度PNG

我有一个灰度的gem顶视图。 (PNG格式,所以有alpha组件) 我想从这个图像创build12个小尺寸的button,每个都有不同的颜色。 为了整洁,我想在代码中做这个,而不是在一些艺术包的外面。 任何人都可以提供一个方法(甚至是一些代码)来做到这一点? PS我知道如何在GL中使用一个荒谬的数量代码,我希望有一个更简单的方式使用核心graphics/核心animation 编辑:工作解决scheme,感谢从下面的答案精彩 CGSize targetSize = (CGSize){100,100}; UIImage* image; { CGRect rect = (CGRect){ .size = targetSize }; UIGraphicsBeginImageContext( targetSize ); { CGContextRef X = UIGraphicsGetCurrentContext(); UIImage* uiGem = [UIImage imageNamed: @"GemTop_Dull.png"]; // draw gem [uiGem drawInRect: rect]; // overlay a red rectangle CGContextSetBlendMode( X, kCGBlendModeColor ) ; CGContextSetRGBFillColor ( X, […]

使用核心graphics的优点

我想知道从使用Core Graphics而不是Open GL ES得到什么样的优势。 我的主要问题是基于这个: 创build简单的视图animation。 创build一些视觉吸引力的对象(像核心绘图的graphics,例如animation对象等)。 费时(包括学习和实施) 简单的2D游戏 复杂的2D游戏 3D游戏 代码维护广告也更干净的代码。 与其他UI元素更容易集成。 谢谢。

iPhone光泽图标使用核心graphics

我想知道是否有人知道如何使用CoreGraphics的图像,并添加像你在iOS上看到的光泽效果。 具体来说,我想从网上下载一个图像,并像这样的样式。 我search了高和低,所有我find的是如何在PhotoShop中,而不是在代码中的例子。 任何代码片段或指向资源,可以帮助我将不胜感激。