Tag: 绘图

实现绘图应用程序的橡皮擦function

我正在ray wenderlich的网站上关于用UIKit创build一个简单的绘图应用程序的这个伟大的教程。 http://www.raywenderlich.com/18840/how-to-make-a-simple-drawing-app-with-uikit 该教程是伟大的,一切工作。 我遇到的问题是,在创build橡皮擦function时,ray提出的解决scheme是使用与背景具有相同颜色的画笔。 对我来说,这似乎不是一个很好的解决scheme。 如果背景不是一个像梯度或任何图像像许多着色书应用程序一样的纯色。 所以基本上问题是:是否有一种方法可以在给定的位置从UIImageView中移除颜色(将该区域中的所有像素转换为透明)。 任何帮助或指针将大大appriciated。 谢谢

为iOS性能问题绘制应用程序

我正在为iOS创build绘图应用程序。 通过触摸来绘制东西我使用了本教程中的代码: http : //www.raywenderlich.com/18840/how-to-make-a-simple-drawing-app-with-uikit 我用于绘制的代码如下所示: – (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { mouseSwiped = NO; UITouch *touch = [touches anyObject]; lastPoint = [touch locationInView:self.view]; } – (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { mouseSwiped = YES; UITouch *touch = [touches anyObject]; CGPoint currentPoint = [touch locationInView:self.view]; UIGraphicsBeginImageContext(self.view.frame.size); [self.tempDrawImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y); CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, […]

如何使CAShapeLayer中的dynamicstrokeColor? 在Swift中

我使用六个参数(活动,不活动,有线,压缩,免费和总计)。 我做了一个CAShapeLayer类,我在那里做了一个function,我可以绘制圆只是添加参数的帮助。 我制作了CGPath并且在绘制一个圆圈的函数中添加了六次。 我得到了5层到UIView 。 我做了一秒钟更新数据的定时器,但它添加其他5层到UIView 。 这是错误的方式。 我想用数据animation弧,并在一秒钟内更新。 当层变得太多设备工作缓慢。 我怎样才能做到这一点? 我在这里写了我的例子。 public class Arc { public init() { } public func addFigure(path: CGPath, fillColor: UIColor, strokeColor: UIColor, strokeStart: CGFloat, strokeEnd: CGFloat, lineWidth: CGFloat, miterLimit: CGFloat, lineDashPhase: CGFloat, layer: CALayer) -> CAShapeLayer { let shape = CAShapeLayer() shape.path = path shape.fillColor = fillColor.CGColor shape.strokeColor = […]

UIGraphicsGetImageFromCurrentImageContext更改图像大小

我正在绘制应用程序,我需要绘制图像。 但是,当我尝试到图像大小是改变。 我想要绘制后的图像大小相同。 这是我的代码 NSLog(@"%@",NSStringFromCGSize(self.image.size)); self.image = UIGraphicsGetImageFromCurrentImageContext(); NSLog(@"%@",NSStringFromCGSize(self.image.size)); O / P 2014-08-24 15:11:14.511 Demo[4877:60b] {877, 1136} 2014-08-24 15:11:15.533 Demo[4877:60b] {320, 460} 如何能够像以前一样拍摄图像质量在这里图像是缩小的

在CALayer的display / drawRect方法中究竟会发生什么?

如果这两种方法中的哪一种是合适的,则可以: 更改CATextLayer的文本 将不同的图像加载到CAImageLayer中 告诉子层更新自己

iOS – 不覆盖自身的画笔

当您在Photoshop中使用画笔进行绘制时,它不会重叠,直到您释放鼠标button并再次按下。 我发现这些图像,让我更好地解释自己。 现在我的绘图工作是正确的,但是我希望他们像左边那样工作。 如果甚至有可能,我希望即使在用户释放手指并再次开始绘制之后,它也不会叠加,但是我会用基本的类似于Photoshop的笔刷。 我想创build一个永远不会重叠的笔刷就像创build一个橡皮擦一样,但是我可能是错的。 我需要swift / obj-c中的代码示例。

在某些angular度的连接线有尖顶而不是圆angular

我的应用程序允许您使用各种工具绘制。 其中一个让你做出一个angular度:你点击三次,然后为你画一个angular度。 不幸的是,它变得非常尖锐,但由于某种原因而在某些angular度再次变圆。 我在用着 CGContextSetLineCap(context, kCGLineCapRound); 下面是一张照片来举例说明我在说什么: 有谁知道是什么原因或如何解决它,所以它是所有的时间? 在大多数情况下,我所做的只是: CGContextMoveToPoint(context, first.x, first.y); CGContextAddLineToPoint(context, second.x, second.y); CGContextAddLineToPoint(context, third.x, third.y); 然后中风。

手指画的效率问题

我想开发一个应用程序来绘制触摸iPhone屏幕search如何做到这一点我已经find了一个示例配方(09-油漆)到第七章的埃里卡·萨申iPhone开发者食谱3.0代码示例 。 在这个例子中,你可以在这行下面看到,屏幕上的触摸被存储到一个NSMutableArray以便使用UIView方法drawRect绘制。 有了这个解决scheme,我有一个问题时, points组保持重要的点数。 我怎么解决这个问题? 如何在不清除UIView情况下调用drawRect方法,并只添加最后一行(已绘制的行和points组的最后一个点之间)? // Start new array – (void) touchesBegan:(NSSet *) touches withEvent:(UIEvent *) event { self.points = [NSMutableArray array]; CGPoint pt = [[touches anyObject] locationInView:self]; [self.points addObject:[NSValue valueWithCGPoint:pt]]; } // Add each point to array – (void) touchesMoved:(NSSet *) touches withEvent:(UIEvent *) event { CGPoint pt = [[touches anyObject] locationInView:self]; […]

在可缩放的视图上绘图

我正在研究一个小的绘图应用程序,它具有支持放大/缩小的基本要求。 我有两个主要问题: 当视图放大/变形时,绘图不会显得清晰明了。 有没有更好的方法,还是有一种方法来改善视图缩放时的绘图? 在1200 x 1200磅的canvas上(在iPhone上)绘图时,绘图性能较差。 任何机会,我可以改善它的大帆布尺寸? 缩放代码: – (void)scale:(UIPinchGestureRecognizer *)gestureRecognizer { [self adjustAnchorPointForGestureRecognizer:gestureRecognizer]; UIView *canvas = [gestureRecognizer view]; if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) { // Calculate the drawing view's size CGSize drawingViewSize = …; // Calculate the minimum allowed tranform size // Developer's Note: I actually wanted to […]

更stream畅的写意体验(iOS)

我正在做一个math相关的活动,在这个活动中,用户可以用他们的手指来画画,因为他们试图解决math问题。 但是,我注意到,当我快速移动手指时,线条稍微滞后于我的手指。 我想知道是否有一些地方因为演出或者触动移动而变得不够用(如果不能快速移动的话,这是非常顺利和美妙的)。 我正在使用UIBezierPath 。 首先,我使用init方法创build它,如下所示: myPath=[[UIBezierPath alloc]init]; myPath.lineCapStyle=kCGLineCapSquare; myPath.lineJoinStyle = kCGLineJoinBevel; myPath.lineWidth=5; myPath.flatness = 0.4; 然后在drawRect中: – (void)drawRect:(CGRect)rect { [brushPattern setStroke]; if(baseImageView.image) { CGContextRef c = UIGraphicsGetCurrentContext(); [baseImageView.layer renderInContext:c]; } CGBlendMode blendMode = self.erase ? kCGBlendModeClear : kCGBlendModeNormal; [myPath strokeWithBlendMode:blendMode alpha:1.0]; } baseImageView是我用来保存结果,所以我不必画很多path(一段时间后变得非常慢)。 这是我的触摸逻辑: -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *mytouch=[[touches allObjects] objectAtIndex:0]; [myPath […]