Tag: 核心graphics

直接访问CGRect值与在Swift-Objective-C规则中规范化仍然有效?

这个问题受到了Andrew Carter对Swift中有关新的CGSize初始化器问题的评论 。 CGGeometry的Apple Docs说: …您的应用程序应避免直接读取和写入CGRect数据结构中存储的数据。 相反,使用这里描述的function来操纵矩形并检索它们的特征。 苹果公司build议不要直接访问CGRect的数据,这些数据仍然适用于Swift吗? 为什么应该使用CGRectGetMidX , CGRectGetWidth等来代替直接访问CGRect结构的值,当这些属性现在暴露在Swift的CGRect上的新扩展?

在文本matrix上使用多个CGAffineTransforms

我使用Quartz显示文本。 这是我的代码: CGContextRef myContext = UIGraphicsGetCurrentContext(); CGContextSelectFont(myContext, "Helvetica", 12, kCGEncodingMacRoman); CGContextSetCharacterSpacing(myContext, 8); CGContextSetTextDrawingMode(myContext, kCGTextFillStroke); CGContextSetRGBFillColor(myContext, 0, 0, 0, 1); CGContextSetRGBStrokeColor(myContext, 0, 0, 0, 1); CGContextSetTextMatrix(myContext,CGAffineTransformMake(1, 0, 0, -1, 0, 0)); CGContextShowTextAtPoint(myContext, textOrigin.x, textOrigin.y,[way.name UTF8String],[way.name length]); 这显示我的文本正确的方式,在正确的方向,但是我也需要添加一个旋转的文本使用CGAffineTransformMakeRotation(angle); 。 我似乎无法弄清楚如何在文本matrix上应用两个仿射变换,但没有一个覆盖另一个。 任何帮助将是伟大的。

我怎样才能修复CGContextRestoreGState:无效的上下文0x0

这是我正在使用的代码: CGRect imageRect = CGRectMake(0, 0, oldImage.size.width, oldImage.size.height); CGRect newRect = imageRect; UIGraphicsBeginImageContextWithOptions(newRect.size, NO, oldImage.scale); CGContextRef ctx = UIGraphicsGetCurrentContext(); CGContextScaleCTM(ctx, 1, -1); CGContextTranslateCTM(ctx, 0, -(newRect.size.height)); CGContextSaveGState(ctx); CGContextClipToMask(ctx, newRect, oldImage.CGImage); CGContextSetFillColorWithColor(ctx, [UIColor colorWithWhite:0 alpha:0].CGColor); CGContextFillRect(ctx, newRect); CGContextRestoreGState(ctx); CGContextClipToMask(ctx, imageRect, oldImage.CGImage); CGContextSetFillColorWithColor(ctx, tintColor.CGColor); CGContextFillRect(ctx, imageRect); UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 我继续在控制台中得到错误,我不知道要尝试什么或没有正确完成。

CGContextShowTextAtPoint和空格

为什么下面的代码忽略了空格? UIColor *textColor = [UIColor colorWithRed:153.0/255.0 green:102.0/255.0 blue:51.0/255.0 alpha:1.0]; CGContextSetFillColorWithColor(ctx, [textColor CGColor]); CGContextSelectFont(ctx, "Helvetica Neue Bold" , 14, kCGEncodingMacRoman); CGContextSetTextMatrix(ctx, CGAffineTransformMakeScale(1, -1)); CGContextSetShadowWithColor(ctx, CGSizeMake(0.0, 1.0), 1.0, [[UIColor whiteColor] CGColor]); //CGContextSetAllowsAntialiasing(ctx, YES); NSString *str = @"test1 test2"; CGContextShowTextAtPoint(ctx, 5, 17, [str UTF8String], str.length); 如果将字体名称更改为“Helvetica Neue”,会产生空白: 有谁知道这里发生了什么?

CGPath大纲

我正在绘制一个CGPath,因为它的笔画是中风的。 基本上我想要一个使用CGPath绘制一条线。 然后我想回到最后一个CGPath的两边画线,使其成为轮廓线。 这条线可以弯曲和转弯,但我总是需要外面的两条线来跟随。 编辑:我需要能够使中间的行透明,但轮廓坚实的黑色。

核心graphics坐标系统

当重写drawRect我发现坐标那里使用0,0作为左上angular。 但苹果UIView编程指南说: 一些iOS技术定义了默认坐标系统,其原点和方向与UIKit所使用的不同。 例如,Core Graphics和OpenGL ES使用坐标系统,坐标系统的原点位于视图或窗口的左下angular,y轴相对于屏幕向上。 我很困惑; 当他们提到Core Graphics的时候,他们是否在谈论与Quartz不同的东西?

UIGraphicsBeginImageContext必须是视网膜感知?

我读过一些推荐使用的post: UIGraphicsBeginImageContextWithOptions((image.size), NO, 0.0f) 代替: UIGraphicsBeginImageContext(image.size). 因为第一个绘图时使用视网膜缩放,否则你会得到块状图像。 我对使用或不使用视网膜的选项有些困惑。 如果我有一个1000×1000像素的照片,我调用UIGraphicsBeginImageContext传递这些尺寸,我没有具体指定我要绘制多less点? 这可以吗? 或者我应该调用UIGraphicsBeginImageContextWithOptions传递一半的尺寸(500x500px)? 它有什么区别?

转换图像到黑色和白色的IOS?

我发现很多代码将图像转换为纯黑色和白色。 但没有这个工作。 我已经试过这个代码,但它的图像转换为灰度不是黑色和白色。 -(UIImage *)convertOriginalImageToBWImage:(UIImage *)originalImage { UIImage *newImage; CGColorSpaceRef colorSapce = CGColorSpaceCreateDeviceGray(); CGContextRef context = CGBitmapContextCreate(nil, originalImage.size.width * originalImage.scale, originalImage.size.height * originalImage.scale, 8, originalImage.size.width * originalImage.scale, colorSapce, kCGImageAlphaNone); CGContextSetInterpolationQuality(context, kCGInterpolationHigh); CGContextSetShouldAntialias(context, NO); CGContextDrawImage(context, CGRectMake(0, 0, originalImage.size.width, originalImage.size.height), [originalImage CGImage]); CGImageRef bwImage = CGBitmapContextCreateImage(context); CGContextRelease(context); CGColorSpaceRelease(colorSapce); UIImage *resultImage = [UIImage imageWithCGImage:bwImage]; CGImageRelease(bwImage); UIGraphicsBeginImageContextWithOptions(originalImage.size, NO, originalImage.scale); […]

什么是创build圆圈animation的正确方法?

我刚刚看到这个图像,我很感兴趣,如何在Swift中创build这种types的animation: 所以,我有很多灰色的牙齿在圈子里,当我设置angular度,例如45度,它会在0..45度内将这些灰色的牙齿填充成蓝色。 你可以向我解释正确的方法,或者你可以显示不同的片段(这将是伟大的)。 后来我会search或阅读。 提前致谢!

具有“ – ”字符的string在iOS中的绘制方法中不能正确绘制

我正在iOS的coretext上工作。 我已经通过用下面的代码replace-drawRect方法实现了自定义的UIView : – (void)drawRect:(CGRect)rect { [super drawRect:rect]; CGRect frameRect=CGRectMake(50, 200, 80, 15); // NSString *textToDraw=@"A-BCDEFGHIJKLM"; // NSString *textToDraw=@"abc"; // NSString *textToDraw=@"ABCDEFGHIJKLMNOPQRST"; NSString *textToDraw=@"A-BCDEFGHIJ"; // NSString *textToDraw=@"A-BCDEFGHI"; CFStringRef stringRef = (__bridge CFStringRef)textToDraw; NSMutableAttributedString* attString = [[NSMutableAttributedString alloc]initWithString:textToDraw]; NSInteger _stringLength=[textToDraw length]; CTTextAlignment theAlignment = kCTLeftTextAlignment; // kCTRightTextAlignment; //kCTCenterTextAlignment; CTParagraphStyleSetting theSettings[1] = { { kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignment),&theAlignment } […]