Tag: 核心graphics

iPhone的iOS如何翻转/reflection任何UIView的地方?

我知道如何翻转/reflection/旋转的UIImage通过重新绘制它的范围内。 – (IBAction)reflectImageView:(UIImageView)imageView { UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO, 0.0); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextScaleCTM(context, 1.0, -1.0); CGContextTranslateCTM(context, 0.0, -imageView.bounds.size.height); [imageView.layer renderInContext:context]; imageView.image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); } 但是,如何为任何UIView创build一个“翻转/reflection”效果,最好是保持与之前一样的位置? 谢谢!

UIGraphicsBeginImageContext与iOS上的CGBitmapContextCreate

这可能是一个非常愚蠢的问题,但是有人可以告诉我使用UIGraphicsBeginImageContext创buildCGContextRef和使用CGBitmapContextCreate绘制图像的区别吗? 特别是现在,因为UIKit绘图是线程安全的,我想知道是否有任何理由通过UIGraphicsBeginImageContext使用CGBitmapContextCreate。

在PDF上添加注释

我必须开发一个iPad应用程序,可以查看PDF文件,并dynamic地绘制一些预定义的注释。 这就像http://plangrid.com/ do。 我去了WWDCvideo,stackoverflow和其他一些博客。 但是找不到在PDF上添加控制器栏的方法。 并从中拖出一个注释并放在PDF上。 我有一个关于查看PDF的想法。 我跟着ZoomingPDFViewer的例子 。 请build议我。 我正在使用XCode 4和iOS 4.3。

在这个CGBitmapContextCreate中,为什么是bytesPerRow 0?

我注意到在苹果的示例代码中,他们通常在CGBitmapContextCreate的bytesPerRow参数中提供值0。 例如,这来自reflection示例项目。 CGContextRef gradientBitmapContext = CGBitmapContextCreate(NULL, pixelsWide, pixelsHigh, 8, 0, colorSpace, kCGImageAlphaNone); 这对我来说似乎很奇怪,因为我一直走图像宽度乘以每个像素的字节数的路线。 我尝试在零代码中交换我自己的代码并进行testing。 果然,它仍然有效。 size_t bitsPerComponent = 8; size_t bytesPerPixel = 4; size_t bytesPerRow = reflectionWidth * bytesPerPixel; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(NULL, reflectionWidth, reflectionHeight, bitsPerComponent, 0, // bytesPerRow ?? colorSpace, kCGImageAlphaPremultipliedLast); 根据文档,bytesPerRow应该是“位图的每行使用的内存的字节数”。 那么交易是什么? 什么时候可以提供一个零点,何时必须计算确切的值? 这样做有没有任何性能影响?

绘制圆梯度

我想绘制一个圆形渐变,如下面的示例图片。 我可以很容易地pipe理径向渐变,但我不知道如何做一个循环。 我正在考虑在一条线上绘制渐变,然后将其转化为一个圆。 这可能吗? 这是我如何绘制径向渐变: CGFloat a = MIN(self.frame.size.width, self.frame.size.height) – _lineWidth; //Get current context CGContextRef mainContext = UIGraphicsGetCurrentContext(); CGRect newRect = rect; newRect.origin.x = ((self.frame.size.width – a)/2.0f); newRect.origin.y = ((self.frame.size.height – a)/2.0f); newRect.size.width = a; newRect.size.height = a; // Fill circle const CGFloat *_components = CGColorGetComponents(_fillColor.CGColor); CGFloat red = _components[0]; CGFloat green = _components[1]; […]

将BGRA转换为ARGB

我正在阅读本教程获取iPhone相机的像素数据。 虽然我没有运行和使用这个代码的问题,我需要把摄像头数据(它来自BGRA)的输出,并将其转换为ARGB,以便我可以使用它与外部库。 我该怎么做呢?

Swift – Playground – 核心graphics/核心文本/自定义视图

题 我试图在swift操场上制作一个自定义的UIView组件。 我已经能够弄清楚除了正确渲染文本之外,如何做所有事情。 我不知道如果我应该通过核心graphics或核心文本,或如何让它正常工作。 正如你在下面的图片中看到的,我想在我的自定义视图组件的任一侧上颠倒和右侧渲染文本 我已经尝试了各种方式来让文本工作,但我一直搁浅。 如果有人能够告诉我如何修改我的游乐场,以添加几个文本渲染将是非常棒的。 游乐场代码 // Playground – noun: a place where people can play import Foundation import UIKit class RunwayView : UIView { var northText : String? var southText : String? ///Draws the "runway" override func drawRect(rect: CGRect) { // Setup graphics context var ctx = UIGraphicsGetCurrentContext() // clear context CGContextClearRect(ctx, […]

在iOS开发中,如果使用Core Graphics和/或Quartz 2D,我怎样才能绘制出一个渐变的圆形,使其看起来像一个球体?

到目前为止,我已经看过使用CGContextDrawLinearGradient()和CGContextDrawRadialGradient(),但是,与前者我无法弄清楚如何使梯度看起来像一个球体,与后者,我不知道如何使渐变成一个球体的形状,因为每次我尝试,它变成了完整的圆柱体而不是只有一个球体的形状。 下面显示了我用来绘制2D圆圈的代码。 我想使用梯度或任何其他方法可能使用只有核心graphics和/或石英2D填充圆的方式,使它看起来像一个球体。 当前绘制圆圈的代码: CGContextRef ctx = UIGraphicsGetCurrentContext(); float x = 20.0; float y = 20.0; float radius = 12.5; CGContextFillEllipseInRect(ctx, CGRectMake(x, y, radius, radius); PS – 上面的代码正如它应该的那样工作,所以万一出现任何错误,他们只是从我的错误input问题,而不是在input代码到实际的文件。

CoreGraphics在白色的canvas上绘制图像

我有一个具有可变宽度和高度的源图像,我必须在全屏iPad UIImageView上显示,但在图像本身附加了边框。 所以我的任务是创build一个带有白色边框的新图像,但不能与图像本身重叠。 我目前正在通过这个代码重叠: – (UIImage*)imageWithBorderFromImage:(UIImage*)source { CGSize size = [source size]; UIGraphicsBeginImageContext(size); CGRect rect = CGRectMake(0, 0, size.width, size.height); [source drawInRect:rect blendMode:kCGBlendModeNormal alpha:1.0]; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0); CGContextSetLineWidth(context, 40.0); CGContextStrokeRect(context, rect); UIImage *testImg = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return testImg; } 任何人都可以告诉我,我怎么第一次绘制一个白色的canvas,在每个方向比源图像大40个像素,然后在上面画这个图像?

iOS绘图圈子

我正在尝试在iOS应用程序中创build以下圈子。 我知道如何制作这个圈子,但是我不太清楚如何获得弧形点。 它必须在代码中而不是图像。 以下是我目前的代码。 – (void)drawRect:(CGRect)rect { CGPoint point; point.x = self.bounds.origin.x + self.bounds.size.width/2; point.y = self.bounds.origin.y + self.bounds.size.height/2; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetLineWidth(context, 2.0); CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); CGRect circle = CGRectMake(point.x/2,point.y-point.x/2,point.x,point.x); CGContextAddEllipseInRect(context, circle); CGContextStrokePath(context); for (int i = 0; i<8; i++) { CGRect circleMini = CGRectMake(??????,??????,point.x/4,point.x/4); CGContextAddEllipseInRect(context, circleMini); CGContextStrokePath(context); } } 更新回答 float cita […]