Tag: 核心graphics

CG中的纹理线

我正在为iOS的绘图应用程序工作。 在这个应用程序中,我需要绘制质感的线条。 对于这个我正在使用这种方法 。但是质地太小而不是形状。 我想知道我做错了什么,我该如何解决它。 这是我更新的代码 – CGPoint mid1 = midPoint(previousPoint1, previousPoint2); CGPoint mid2 = midPoint(currentPoint, previousPoint1); [curImage drawAtPoint:CGPointMake(0, 0)]; CGContextRef context = UIGraphicsGetCurrentContext(); [self.layer renderInContext:context]; CGContextMoveToPoint(context, mid1.x, mid1.y); CGContextAddQuadCurveToPoint(context, previousPoint1.x, previousPoint1.y, mid2.x, mid2.y); CGContextSetLineCap(context, kCGLineCapRound); CGContextSetLineJoin(context, kCGLineJoinRound); CGContextSetLineWidth(context, self.lineWidth); //trans layer CGContextBeginTransparencyLayer(context, nil);// CGRect rect=CGContextGetPathBoundingBox (context);// CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);// //trans layer end CGContextSetShouldAntialias(context, YES); […]

UIGraphicsGetCurrentContext()寿命短

我有一个实现徒手绘制的视图,但是我有一个小问题。 我注意到在iPad 3上,所有的东西都变成了地狱,所以我试图更新我的绘图代码(可能是我应该做的第一个地方),只更新被抚摸的部分。 然而,打开后的第一次冲程,以及闲置约10秒后的第一次冲程非常缓慢。 在所有事情都“热身”之后,它就像黄油一样平滑,每个drawRect只需要大约0.15ms。 我不知道为什么,但整个视图矩形被标记为第一个drawRect脏,第一个drawRect后空闲(然后它需要约150毫秒更新)。 堆栈跟踪显示我的矩形被CABackingStoreUpdate_覆盖 如果矩形很大,我试图不绘制图层,但是随后我的整个上下文变为空白(当我在旧区域上绘制像乐透彩票票时,会再次出现)。 有没有人有任何想法与UIGraphicsGetCurrentContext()? 这是我能想象到的唯一的麻烦。 也就是说,我的观点背景被上下文精灵拉下来了,所以需要重新充实自己。 有什么设置我可以用来坚持相同的上下文吗? 或者还有其他的东西在这里…在初始显示之后没有必要更新完整的矩形。 我的drawRect非常简单: – (void)drawRect:(CGRect)rect { CGContextRef c = mDrawingLayer ? CGLayerGetContext(mDrawingLayer) : NULL; if(!mDrawingLayer) { c = UIGraphicsGetCurrentContext(); mDrawingLayer = CGLayerCreateWithContext(c, self.bounds.size, NULL); c = CGLayerGetContext(mDrawingLayer); CGContextSetAllowsAntialiasing(c, true); CGContextSetShouldAntialias(c, true); CGContextSetLineCap(c, kCGLineCapRound); CGContextSetLineJoin(c, kCGLineJoinRound); } if(mClearFlag) { CGContextClearRect(c, self.bounds); mClearFlag = NO; } […]

在iOS中使用Core Graphics绘制VU表

我正在尝试使用Core Graphics来绘制一个类似的图像: 我能画出主要的弧线,但我不能理解,如何划分弧线/在弧线上画出刻度? 我目前的代码绘制弧是: [path addArcWithCenter:point radius:radius startAngle:DEGREES_TO_RADIANS(specific_start_angle) endAngle:DEGREES_TO_RADIANS(specific_end_angle) clockwise:NO]; 我尝试使用strokeWithBlendMode但我面临的问题与gradle或蜱的位置。

CoreGraphics图像大小调整

此代码来自Apple的WWDC 2011会议318 – iOS性能深度,并使用CoreGraphics从服务器托pipe的映像创build缩略图。 CGImageSourceRef src = CGImageSourceCreateWithURL(url); NSDictionary *options = (CFDictionaryRef)[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:1024 forKey:(id)kCGImageSourceThumbnailMaxPixelSize]; CGImageRef thumbnail = CGImageSourceCreateThumbnailAtIndex(src,0,options); UIImage *image = [UIImage imageWithCGImage:thumbnail]; CGImageRelease(thumbnail); CGImageSourceRelease(src); 但它不起作用,文档并没有真正的帮助。 在iOS文档中,可以使用CGImageSource CGImageSourceRef CGImageSourceCreateThumbnailAtIndex 在Mac OS X v10.4或更高版本中 我怎样才能使这个工作? 编辑 这些是我得到的编译器错误: 使用未声明的标识符'CGImageSourceRef' 使用未声明的标识符'kCGImageSourceThumbnailMaxPixelSize' 使用未声明的标识符'src' 函数CGImageSourceCreateThumbnailAtIndex的隐式声明在C99中是无效的 在C99中,函数'CGImageSourceRelease'的隐式声明是无效的 函数'CGImageSourceCreateWithURL'的隐式声明在C99中是无效的

从缓冲区创build的NSData创buildUIImage返回nil?

我试图通过抓住CGImage ,获取每个像素,并从中减去0xa ,然后将每个像素保存到一个新的缓冲区来使UIImage变暗。 但是当我尝试加载缓冲区作为图像,函数[ 创build一个CGImage ]返回零 。 这意味着我必须在代码中做错了一些事情(我不会感到惊讶)。 我希望这与缓冲区格式不正确有关。 熟悉Core Graphics的人能帮我发现错误吗? var provider = CGImageGetDataProvider(imageArray[imageNumber]?.CGImage) //Get data provider for image in an array at index No. imageNumber let data = CGDataProviderCopyData(provider) var buffer = [Byte](count: CFDataGetLength(data), repeatedValue: 0) //create buffer for image data CFDataGetBytes(data, CFRangeMake(0, CFDataGetLength(data)), &buffer) //load the image's bytes into buffer var newBuffer […]

用Core Graphics绘图在Retina显示屏上看起来矮胖

我有一个UIView从drawRect:rect中绘制一个圆。 在阅读Retina显示屏上的Apple dev信息之后,似乎使用Core Graphics意味着绘图将自动利用更高的分辨率。 然而,这个简单的圆圈与徽章图标中的相似圆圈相比看起来相当矮胖。 很显然,我将它与具有光泽和阴影的东西进行比较,但我认为很明显,我的绘图效果不好。 我尝试了苹果的图标徽章和我的圈子的截图,他们在我的Mac上看起来相同 – 但是当看着手机上的每一个不同之处显而易见。 有什么简单的我在这里失踪? 这是我在drawRect:rect中使用的绘图代码 UIBezierPath* aPath = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(0, 0, 22, 22)]; [[UIColor whiteColor] setStroke]; [[UIColor redColor] setFill]; CGContextRef aRef = UIGraphicsGetCurrentContext(); CGContextTranslateCTM(aRef, 10, 10); aPath.lineWidth = 3; [aPath fill]; [aPath stroke]; 感谢您的帮助,Rob

在iOS上使用Core Graphics在PDF中embedded超链接

我试图做一个很简单的事情:在一个PDF文件中写一个URL,用户可以真正点击它。 我知道使用libharu它可以完成。 我正在寻找的是使用核心graphics做同样的事情,因为我已经在我的应用程序中已经有了整个代码已经使用这些方法。 ==编辑== 我想我find了一些东西: UIGraphicsSetPDFContextURLForRect但我不能让它工作。 我正在使用类似于: NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; UIGraphicsSetPDFContextURLForRect( url, CGRectMake(0, 0, 100, 100)); 虽然,矩形是不可点击的。

在iOS中replace特定颜色的图像

我想用其他用户select的颜色replace图像的特定颜色。 在replace图像的颜色时,我想保持原来颜色的渐变效果。 例如看到附加的图像。 我试图用CoreGraphics这样做,我成功取代了颜色。 但replace颜色不能保持图像中原始颜色的渐变效果。 有人可以帮我吗? CoreGraphics是正确的方法来做到这一点? 提前致谢。

禁用UIBezierPath的消除锯齿

我需要呈现没有抗锯齿的UIBezierPaths,然后将它们保存为PNG,以保留完整的像素表示(例如,不让JPEG将图像弄糟)。 我已经尝试调用UIBezierPaths之前下面的CG函数,但似乎没有任何影响最终的渲染图像。 path仍然呈现抗锯齿(即平滑)。 CGContextSetShouldAntialias(c, NO); CGContextSetAllowsAntialiasing(c, NO); CGContextSetInterpolationQuality(c, kCGInterpolationNone); 任何命中将不胜感激。

iOS Quartz在pdf中embedded字体

我正尝试使用自定义字体生成一个带有自定义符号(例如“€”)的文本的PDF页面。 我已经使用UIGraphicsBeginPDFContextToData和UIGraphicsBeginPDFPage创build了PDF上下文和页面。 我的代码呈现文字看起来像这样: NSString *fontFile = [[NSBundle mainBundle] pathForResource:@"somefont.otf" ofType:nil]; CGDataProviderRef dataProvider = CGDataProviderCreateWithFilename([fontFile cStringUsingEncoding:NSASCIIStringEncoding]); CGFontRef cgfont = CGFontCreateWithDataProvider(dataProvider); CTFontRef ctfont = CTFontCreateWithGraphicsFont(cgfont, 10, NULL, NULL); CFRelease(dataProvider); NSString *text = @"Hello €"; int len = [text length]; CGGlyph glyphs[len]; CTFontGetGlyphsForCharacters(ctfont, (const unichar*)[text cStringUsingEncoding:NSUnicodeStringEncoding], glyphs, len); CGContextSetTextDrawingMode(_context, kCGTextFill); CGContextShowGlyphsAtPoint(_context, 10, 10, glyphs, len); CFRelease(cgfont); CFRelease(ctfont); 呈现€ […]