Tag: 核心graphics

根据UIScrollView中的视口剪裁UIImage

我在UIScrollView里有一个UIImageView(用Aspect Fill初始化)。 用户将使用它来调整和定位一个UIImage到他的喜欢,按一个button,然后确切地说,他在屏幕上看到的将被发送到服务器,只在原来的图像坐标。 换句话说,生成的图像会比屏幕上的图像大。 以下是我的代码到目前为止的主要部分: // select the original CGFloat imageRatio = self.imageView.image.size.width / self.imageView.image.size.height; CGFloat viewRatio = self.imageView.frame.size.width / self.imageView.frame.size.height; CGFloat scale; // get the scale factor of the image being "aspect-filled" if(imageRatio < viewRatio) { scale = self.imageView.image.size.width / self.imageView.frame.size.width; } else { scale = self.imageView.image.size.height / self.imageView.frame.size.height; } // get the cropping […]

添加一个QuadCurve到UIBezierPath

我正在做一个绘图应用程序,我试图平滑我用手指画的线。为此,我正在使用“quadCurveToPoint”function。 但是,我没有得到正确的答案。 以下是我的代码: – (void) drawRect:(CGRect)rect { [path stroke]; } – (id) initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) self.multipleTouchEnabled = NO; path = [UIBezierPath bezierPath]; path.lineWidth = IS_IPAD? 2.0f : 1.0f; return self; } – (void) touchesBegan:(NSSet *) touches withEvent:(UIEvent *) event { UITouch *touch = [touches anyObject]; m_previousPoint1 = [touch locationInView:self]; m_previousPoint2 = […]

CIFilter工作不正常,返回空映像

嘿,我一直在使用一些filter。 并不是所有的人都像CISepiaTone和CIHueAdjust那样正常工作。 最近我尝试了CIGLoomfilter,它返回一个空的图像。 -(UIImage*)getGloom:(UIImage*)anImage{ CGImageRef cgimage = anImage.CGImage; CIImage *cimage = [CIImage imageWithCGImage:cgimage]; CIFilter *filter = [CIFilter filterWithName:@"CIGloom"]; [filter setDefaults]; [filter setValue: cimage forKey: @"inputImage"]; [filter setValue: [NSNumber numberWithFloat: 25] forKey: @"inputRadius"]; [filter setValue: [NSNumber numberWithFloat: 0.75] forKey: @"inputIntensity"]; CIContext *context = [CIContext contextWithOptions:nil]; CIImage *ciimage = [filter outputImage]; CGImageRef cgimg = [context createCGImage:ciimage fromRect:[ciimage […]

Xcode – 围绕中心绘制圆

我想知道如何围绕从控制的位置采取一个点。 这不是如所希望的那样工作 CGContextRef contextRef = UIGraphicsGetCurrentContext(); CGContextSetLineWidth(contextRef, 2.0); CGContextSetRGBFillColor(contextRef, 0, 0, 1.0, 1.0); CGContextSetRGBStrokeColor(contextRef, 0, 0, 1.0, 1.0); CGRect circlePoint = (CGRectMake(self.frame.size.width / 2, self.frame.size.height / 2, 10.0, 10.0)); CGContextFillEllipseInRect(contextRef, circlePoint);

如何删除遮罩后的UIImageView的透明区域?

在我的一个iOS应用程序中,我试图使用CGImageMask剪切图像的CGImageMask 。 我用下面的代码成功地掩盖了图像: – (UIImage *)maskImage:(UIImage *)referenceImage withMask:(UIImage *)maskImage { CGImageRef maskRef = maskImage.CGImage; CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), CGImageGetHeight(maskRef), CGImageGetBitsPerComponent(maskRef), CGImageGetBitsPerPixel(maskRef), CGImageGetBytesPerRow(maskRef), CGImageGetDataProvider(maskRef), NULL, false); CGImageRef masked = CGImageCreateWithMask([referenceImage CGImage], mask); return [UIImage imageWithCGImage:masked]; } 所以,我的形象将是: myImageView.image = [self maskImage:[UIImage imageNamed:@"image.png"] withMask:[UIImage imageNamed:@"mask.png"]]; 问题:输出图像与参考图像('image.png')大小相同,周围有透明区域。 但是我想避开那些透明区域,裁剪结果图像。 我怎样才能做到这一点? 有几个面具,面具框架是不相似的。 我在此附上问题概览的参考图片。 请帮助我的朋友。 提前致谢。

如何find箭头提示点,给出一条线的起点和终点

考虑你有一个起点(x1,y1)和终点(x2,y2)的一条线。 为了在箭头上画一个箭头(在objective-c中),我需要find箭头(x3,y3,x4,y4)给定箭头的angular度(45度)的点,箭头提示(h)。 所以给定x1,y1,x2,y2,h,alpha什么是x3,y3,x4,y4? 添加了解释问题的图像。 如果答案可以在Objective-C(使用UIBezierpath和CGPoint),将不胜感激。 谢谢!

如何用CGPathAddCurveToPoint创build一个完美的半圆?

我想用CGPathAddCurveToPoint创build一个完美的半径为15点的半圆,就像这样: CGPathMoveToPoint(path, NULL, 0, 0); CGPathAddCurveToPoint(path, NULL, 15, 0, 15, 30, 0, 30); 它从圈子的中间开始。 然后将第一个控制点设置到圆的边界框的右上angular。 第二个控制点设置在圆的边界框的右下angular。 圆圈在边框的底部中间结束。 但是画出来的时候,这个圆圈有一个像蛋的形状。 我怎样才能做出一个完美的,完美无瑕的右半球,从0,0点开始到0,30点?

压扁CGPath

简单地说,我正在寻找一个相当于NSBezierPath的-bezierPathByFlatteningPath ,可以在iOS上使用。 这对我来说无论是直接处理CGPath还是UIBezierPath上的方法都是无关紧要的,因为这两者可以很容易地来回转换。 CGPath Reference和UIBezierPath Class Reference均不表示存在任何此类function或方法。 此外:我知道CGPath的CGPathApply函数,我缺乏时间和技能集来实现自己的展平algorithm,通过迭代CGPathApplierFunction的path元素。 我正在寻找一个现有的解决scheme,这是一个应用函数,UIBezierPath上的一个类,等等。

在UIView上绘制点和线

根据我在Apple Swift 网站上find的一个例子,我给自己一个学习Swift的练习: 正如你所看到的,中间有一条河stream和一些点,形成一条小路。 所以我开始在互联网上寻找类似的河stream图像,并创build了一个Xcode游乐场。 这是我现在所拥有的: 所以基本上我有一个UIView子视图,包括我find的河stream图像和用UIBezierPath制作的点。 我的第一个问题是:这是正确的方式来绘制到UIView? 我的意思是使用UIBezierPath 。 而我的第二个问题是:如何在UIView内的精确坐标上绘制点? ( UIBezierPath或其他一切?) 为了更加精确,我的意图是制定一个algorithm,使程序识别图像,并根据像素颜色,从河stream的起点到终点画一条线,从中间穿过。

如何在Swift上绘制图像?

我需要能够以编程方式绘制图像,并保存该图像供以后使用。 说,在图像上的特定x和y坐标上画一条线,保存图像,并将其显示在一个简单的视图控制器上。 我将如何去在Swift做这个? (最好Swift 2,我仍在开发中,并没有更新我的Mac到Sierra) 更新:可能与将UIImage转换为CGLayer,绘制它,然后将其转换回UIImage有关。