Tag: 核心graphics

iOS:是在OpenGL之上实现的核心graphics?

我发现一个图表显示了OpenGL上面实现的核心graphics,另一个graphics显示了OpenGL。 我会认为苹果会聪明地给予每个平等的graphics硬件的访问权限,但是再次,我不太了解他们使用的graphics芯片…也许这是3D的一路? 这里有人知道具体吗?

旋转图像上下文(CGContextRotateCTM)使其变为空白。 为什么?

#define radians(degrees) (degrees * M_PI/180) UIImage *rotate(UIImage *image) { CGSize size = image.size;; UIGraphicsBeginImageContext(size); CGContextRef context = UIGraphicsGetCurrentContext(); // If this is commented out, image is returned as it is. CGContextRotateCTM (context, radians(90)); [image drawInRect:CGRectMake(0, 0, size.width, size.height)]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; } 其他事情可能是错的吗? 出于想法。

快速创build一个只有两个圆angular的矩形?

我需要在swift中创build一个只有两个圆angular的矩形(Objective C代码也可以)。 目前我的代码正在创build两个矩形 CGPathCreateWithRoundedRect(CGRectMake(0, 0, 30, 60), 5, 5, nil); 和 CGPathCreateWithRoundedRect(CGRectMake(0, 0, 30, 60), 0, 0, nil); 并合并它们(有两个直angular和两个圆angular的),但是我对代码不满意,我很确定应该有更好的方法来做到这一点。 我是新来的iOS和graphics开发和迅速。

在哪里以及如何__bridge

我需要关于iOS中__bridge -ing的一些build议。 希望下面的SSCCE 1能更好地解释这个问题,但我需要知道如何将void*转换为NSMutableArray* ; 应该使用__bridge变体(参见代码注释)。 读了不同的桥梁,我推断,我将需要__bridge_transfer但接着我收到addObject的addObject: 最终,我想在调用CGPath之后在CGPoints中创build一个CGPath数组。 #import <Foundation/Foundation.h> void _processPathElement(void* info, const CGPathElement* element) { NSMutableArray *array = (/* WHAT BRIDGE HERE */ NSMutableArray*) info; switch (element->type) { case kCGPathElementMoveToPoint: case kCGPathElementAddLineToPoint: { CGPoint point = element->points[0]; [array addObject:[NSValue valueWithCGPoint:point]]; break; } default: break; } } int main(int argc, char *argv[]) { @autoreleasepool […]

我如何使用Core Graphics绘制箭头?

我需要画我的绘制应用程序结束箭头线。 我不擅长三angular,所以不能解决这个问题。 用户将他的手指放在屏幕上并向任何方向画线。 所以,箭头应该出现在行结束。

在iOS中使用多点触控绘图进行撤消

我正在使用多点触控书写,所以基本上我正在做的是,我手写支持,因为通常,它的用户权限,我跟着这个链接如何忽略多点触控顺序中的某些UITouch点 一切工作正常,但是当我用手触摸屏幕的时候,他们是撤销的一些问题,否则它工作正常。 以下是我的代码 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch* topmostTouch = self.trackingTouch; for (UITouch *touch in touches) { ctr = 0; touchStartPoint1 = [touch locationInView:self]; [m_undoArray removeAllObjects]; [m_redoArray removeAllObjects]; [m_parentRedoArray removeAllObjects]; if(!topmostTouch || [topmostTouch locationInView:self].y > touchStartPoint1.y) { topmostTouch = touch; pts[0] = touchStartPoint1; } } if (self.trackingTouch != nil && self.trackingTouch != topmostTouch) // […]

使用Cglayer绘图进行撤消和重做

我正在使用绘图应用程序,我正在使用CGlayers进行绘图。 触摸结束后,我从图层中取出图像并将其存储在一个Array中,我使用该Array来撤消操作。 我的触摸结束function -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"Touches ended"); UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0.0); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextDrawLayerInRect(context, self.bounds, self.drawingLayer); m_curImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); [m_undoArray addObject: m_curImage]; } 我的绘图视图根据用户需求dynamic扩展,所以假设用户可以绘制一个drawView大小为200 * 200的线,然后将其展开为200 * 300并再绘制一行,然后将其展开为200 * 300并再绘制一行。 这是应用程序的图像 所以现在我有3个不同大小的图像在UndoArray。 每当我增加/减lesscanvas大小。 我已经写了这个代码 在drawingView的增加和减less,我正在写这个function (void)increaseDecreaseDrawingView { self.currentDrawingLayer = nil; if(self.permanentDrawingLayer) { rectSize = self.bounds; NSLog(@"Size%@", NSStringFromCGRect(self.bounds)); CGContextRef context = […]

如何在多点触控序列中有效处理UITouches

我正在使用多点触控书写,所以基本上我正在做的是,我正在写手与支持,因为通常,它的用户如何写,我跟着这个链接如何忽略多点触控顺序中的某些UITouch点 一切都工作正常单触,但他们是一些问题,当我用手触摸屏幕,即多个UItouches写下面是我的代码 触摸开始,我经历了所有的触摸,我发现触摸与最高的位置,下面是我的代码 以下是我的代码 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch* topmostTouch = self.trackingTouch; for (UITouch *touch in touches) { ctr = 0; touchStartPoint1 = [touch locationInView:self]; if(!topmostTouch || [topmostTouch locationInView:self].y > touchStartPoint1.y) { topmostTouch = touch; pts[0] = touchStartPoint1; } } self.trackingTouch = topmostTouch; } 在感动的时候,我只会采取self.trackingTouch,这是我触摸到的 我的触动移动下面的代码 -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { if(self.trackingTouch== nil) { […]

联盟UIBezierPaths而不是安装path

我有一个应用程序,我采取UIBezierPath并通过一系列appendPath:调用将其用作画笔。 经过几次,并与真正复杂的刷形状内存耗尽,应用程序停下来。 我真正想做的是完全像Paint Code一样的联合,但我找不到任何这样做的方式。 我将如何去结合两个或两个以上的UIBezierPath? 编辑: 这是我想要dynamic实现的一个视觉。 在“绘制代码”中,您需要两条path,并将它们重叠: 但我想合并/联合成一个新的单一path,如: 请注意,在代码的底部面板现在有一个单一的形状代码,这就是我想能够以编程方式可能有1000个原始path。

如何使用Core Graphics绘制点?

我在Quartz中看到绘制线条和圆圈的API。 但是我想要做的就是指定(x,y)笛卡尔坐标来给像素着色一个特定的值。 我怎么做?