Прямо сейчас я могу рисовать с помощью прикосновений, используя touchesMoved.
Я могу изменить толщину чертежа, присвоив CGContextSetLineWidth значение с плавающей точкой, которое я присвоил значению ползунка.
Я могу изменить цвета рисунка.Я делаю это, присваивая CGContextSetStrokeColor в пустом месте touchesMoved 4 различных числа с плавающей точкой.Я присваиваю поплавкам разные значения в соответствии с желаемым цветом.В моем viewDidLoad значения с плавающей точкой от 1 до 4 соответственно равны 1,0, 0,0, 0,0 и 1,0.Это создает красный цвет.Используя IBActions, я присваиваю различные значения для поплавков в соответствии со значением цвета (RGB, а затем альфа-канал). Поэтому, нажав зеленую кнопку, я могу изменить значения поплавков на 0,0, 1,0, 0,0, 1,0.Это создает зеленый цвет.Хорошо!
Итак, теперь я хочу создать кнопку ластика.Я проверил справочную веб-страницу класса UIColor и посмотрел на значения чистого цвета, но они не могли стереть то, что я сделал, что я мог понять.Чистый цвет не стирается, он просто рисует четкий рисунок.Теперь я знаю, что мне нужно создать CGPoint и назначить его для locationInView касания, а затем сказать, что если в этом месте есть рисунок, то рисунок должен быть удален.Я не знаю, правильная ли это концепция, но мне она кажется правильной.Если это не правильно, пожалуйста, скажите мне.
Я предоставлю необходимый код, но я также прошу кого-то поделиться своими знаниями и кодом, потому что это действительно застряло у меня!Честно говоря, я не из тех дешевых людей, которые ищут код, а затем выполняют команду -c, а затем команду -v в XCode.Разъяснения всегда приветствуются и приносят пользу моему обучению, поскольку это все еще то, чем я занимаюсь в возрасте 12 лет!
Вот весь мой код, связанный с вопросом:
.h:
#import <UIKit/UIKit.h>
#import <AudioToolbox/AudioToolbox.h>
@interface GameScreen : UIViewController {
BOOL mouseSwiped;
float lineWidth;
CGPoint lastPoint;
IBOutlet UIImageView *drawImage;
CGFloat f1;
CGFloat f2;
CGFloat f3;
CGFloat f4;
}
-(IBAction)cyan;
-(IBAction)blue;
-(void)checktouch;
-(IBAction)eraser;
-(void)checkgreen;
-(IBAction)orange;
-(IBAction)purple;
-(IBAction)pink;
-(IBAction)black;
-(void)mouseswiped;
-(IBAction)clear;
-(IBAction)dismiss;
-(IBAction)green;
-(IBAction)yellow;
-(IBAction)brown;
-(IBAction)grey;
-(IBAction)white;
-(IBAction)newdp;
-(IBAction)menu;
-(void)remove;
-(IBAction)red;
@end
.m:
#import "GameScreen.h"
#import "DoodlePicsViewController.h"
#import "Settings.h"
@implementation GameScreen
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
mouseSwiped = NO;
UITouch *touch = [touches anyObject];
lineWidth = thickness.value;
lastPoint = [touch locationInView:self.view];
lastPoint.y -= 20;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
mouseSwiped = YES;
UITouch *touch = [touches anyObject];
CGPoint currentPoint = [touch locationInView:self.view];
currentPoint.y -= 20;
UIGraphicsBeginImageContext(self.view.frame.size);
[drawImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), lineWidth);
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(),f1, f2, f3, f4);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
lastPoint = currentPoint;
}
-(IBAction)yellow {
f1 = 1.0;
f2 = 1.0;
f3 = 0.0;
f4 = 1.0;
}
-(IBAction)brown {
f1 = 0.6;
f2 = 0.4;
f3 = 0.2;
f4 = 1.0;
}
-(IBAction)white {
f1 = 1.0;
f2 = 1.0;
f3 = 1.0;
f4 = 1.0;
}
-(IBAction)grey {
f1 = 0.5;
f2 = 0.5;
f3 = 0.5;
f4 = 1.0;
}
-(IBAction)red {
f1 = 1.0;
f2 = 0.0;
f3 = 0.0;
f4 = 1.0;
}
-(IBAction)cyan {
f1 = 0.0;
f2 = 1.0;
f3 = 1.0;
f4 = 1.0;
}
-(IBAction)blue {
f1 = 0.0;
f2 = 0.0;
f3 = 1.0;
f4 = 1.0;
}
-(IBAction)black {
f1 = 0.0;
f2 = 0.0;
f3 = 0.0;
f4 = 1.0;
}
-(IBAction)green {
f1 = 0.0;
f2 = 1.0;
f3 = 0.0;
f4 = 1.0;
}
-(IBAction)orange {
f1 = 1.0;
f2 = 0.5;
f3 = 0.0;
f4 = 1.0;
}
-(IBAction)pink {
f1 = 1.0;
f2 = 0.0;
f3 = 1.0;
f4 = 1.0;
}
-(IBAction)purple {
f1 = 0.5;
f2 = 0.0;
f3 = 0.5;
f4 = 1.0;
}
-(IBAction)eraser {
//I'm stuck right here LOL!
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if(!mouseSwiped) {
UIGraphicsBeginImageContext(self.view.frame.size);
[drawImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), lineWidth);
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), f1, f2, f3, f4);
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
CGContextFlush(UIGraphicsGetCurrentContext());
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}}
-(void)viewDidLoad {
f1 = 1.0;
f2 = 0.0;
f3 = 0.0;
f4 = 1.0;
}
@end