是否有SDK在iOS上通过触摸绘制线条? [英] Is there an SDK to draw lines on iOS with touch?
本文介绍了是否有SDK在iOS上通过触摸绘制线条?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是否可以使用框架来绘制触摸线条。基本上我想为客户添加登录iPad / iPhone的能力并将其作为图像捕获。
Is there a framework I can use to draw lines with touch. Basically I want to add ability for a customer to sign on iPad/iPhone and capture it as an image.
任何帮助都非常感谢。
谢谢。
推荐答案
您可以使用UIKIT框架中提供的核心图形来满足您的要求。
you can meet your requirement by using core graphics available in UIKIT framework.
我在我的申请中有类似的要求,有不同的用途,如果需要,我可以为你提供代码。
i had a similar requirement in my application with a different use ,if needed i can provide you the code.
TNQ
.h文件
#import <UIKit/UIKit.h>
typedef enum _DrawingMode{
DrawingModePen =0,
DrawingModeEraser=1,
} DrawingMode;
@interface DrawingView : UIView {
CGPoint lastPoint;
UIImageView *drawImage;
BOOL mouseSwiped;
int mouseMoved;
DrawingMode mode;
UIColor *_drawingPenColor;
}
@property (nonatomic, retain) UIColor *drawingPenColor;
@property (nonatomic) DrawingMode mode;
@property (nonatomic, retain) UIImageView *imageView;
@property (nonatomic,retain)UIImageView *drawImage;
@end
.m
#import "DrawingView.h"
@implementation DrawingView
@synthesize mode, drawingPenColor=_drawingPenColor, imageView=drawImage;
-(void)initialize{
drawImage = [[UIImageView alloc] initWithImage:nil];
self.autoresizesSubviews = YES;
drawImage.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
drawImage.frame = self.bounds;
[self addSubview:drawImage];
self.backgroundColor = [UIColor clearColor];
mouseMoved = 0;
_drawingPenColor = [[UIColor alloc] initWithWhite:0.0 alpha:1.0];
}
-(void)maskImage:(UIImage *)image 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([image CGImage], mask);
UIImage *tempImage = [[UIImage alloc] initWithCGImage:masked];
//self.clippedImage = tempImage;
[tempImage release];
CFRelease(masked);
CFRelease(mask);
}
-(void)awakeFromNib{
[self initialize];
}
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
// Initialization code
[self initialize];
}
return self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
mouseSwiped = NO;
UITouch *touch = [touches anyObject];
if ([touch tapCount] == 2) {
drawImage.image = nil;
return;
}
lastPoint = [touch locationInView:self];
//lastPoint.y -= 20;
NSLog(@"touches begin");
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
mouseSwiped = YES;
UITouch *touch = [touches anyObject];
CGPoint currentPoint = [touch locationInView:self];
//currentPoint.y -= 20;
UIGraphicsBeginImageContext(self.bounds.size);
[drawImage.image drawInRect:CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 5.0);
if (mode == DrawingModePen) {
NSLog(@"drawing");
CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), [_drawingPenColor CGColor]);
}
else {
CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), [[UIColor clearColor] CGColor]);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextClearRect (UIGraphicsGetCurrentContext(), CGRectMake(lastPoint.x, lastPoint.y, 20, 20));
CGContextStrokePath(UIGraphicsGetCurrentContext());
NSLog(@"clearing");
}
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
lastPoint = currentPoint;
mouseMoved++;
if (mouseMoved == 10) {
mouseMoved = 0;
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if ([touch tapCount] == 2) {
drawImage.image = nil;
return;
}
if(!mouseSwiped) {
UIGraphicsBeginImageContext(self.bounds.size);
[drawImage.image drawInRect:CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 5.0);
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
if (mode == DrawingModePen) {
CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), [_drawingPenColor CGColor]);
}
else {
CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), [self.backgroundColor CGColor]);
}
CGContextStrokePath(UIGraphicsGetCurrentContext());
CGContextFlush(UIGraphicsGetCurrentContext());
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
}
- (void)dealloc {
[drawImage release];
[_drawingPenColor release];
[super dealloc];
}
@end
这篇关于是否有SDK在iOS上通过触摸绘制线条?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文