タッチ移動でプロジェクトを作成しています。タッチしたポイントでの画像のアルファまたは可視性(可能な限り)を変更したいと思います。その特定の画像のポイントを再表示するとしましょう。
PS私はすでに画像を消去する方法を知っています。消去を探しています
タッチ移動でプロジェクトを作成しています。タッチしたポイントでの画像のアルファまたは可視性(可能な限り)を変更したいと思います。その特定の画像のポイントを再表示するとしましょう。
PS私はすでに画像を消去する方法を知っています。消去を探しています
このプロジェクトはあなたが探しているものを正確に実行すると思います:https ://github.com/SebastienThiebaud/STScratchView
2つの画像があり、1つは非表示の画像で、もう1つはスクラッチした画像です。
またはこのプロジェクトでさえ:http://www.cocoacontrols.com/platforms/ios/controls/scratch-n-see
私のブログからコピーされているため、コードの形式が適切でないことをお詫び申し上げます。編集にはかなり時間がかかります。
指が動いたら、いくつかの部分を消去します。
- (UIImage *)erasePartsMoved {
UIImage *image = nil;
UIColor *color = [UIColor whiteColor];
CGFloat width = 5.0f;
CGSize imageContextSize = self.imageView.frame.size;
UIGraphicsBeginImageContext(imageContextSize);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, width);
CGContextSetStrokeColorWithColor(context, [color CGColor]);
CGContextMoveToPoint(context, self.touchStartPoint.x, self.touchStartPoint.y);
//Do something needed.
CGContextAddLineToPoint(context, self.touchEndPoint.x, self.touchEndPoint.y);
CGContextStrokePath(context);
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;}
ポイントをタッチしてから、タッチしたポイントで円を計算し、最後に円のピクセルのアルファを変更します。
typedef struct _singleRGBA{
unsigned char red;
unsigned char green;
unsigned char blue;
unsigned char alpha;} RGBA;
ピクセルのアルファを変更するには:
void filterOpacity(UInt8 *pixelBuf, UInt32 offset, void *context){
double val = *((double*)context);
int a = offset+3;
int alpha = pixelBuf[a];
pixelBuf[a] = SAFECOLOR(alpha * val);}
上記がお役に立てば幸いです。面白い質問です。後で実行可能なデモを行いたいと思います。
- (void)viewDidLoad
{
//load super view
[super viewDidLoad];
//to decrease alpha.
UISwipeGestureRecognizer *swiperight=[[UISwipeGestureRecognizer alloc]
initWithTarget:self action: @selector(setalpha_decrease:)];
[swiperight setDirection:UISwipeGestureRecognizerDirectionRight];
[self.view addGestureRecognizer:swiperight];
//to increase alpha.
UISwipeGestureRecognizer *swipeleft=[[UISwipeGestureRecognizer alloc]
initWithTarget:self action: @selector(setalpha_increase:)];
[swipeleft setDirection:UISwipeGestureRecognizerDirectionLeft];
[self.view addGestureRecognizer:swipeleft];
}
-(void) setalpha_decrease:(UIPanGestureRecognizer *) gestureRecognizer {
imgview.alpha= imgtomove.alpha-(imgtomove.alpha/10);
}
-(void) setalpha_increase:(UIPanGestureRecognizer *) gestureRecognizer {
imgview.alpha= imgtomove.alpha+(imgtomove.alpha/10);
}
アルファはビュー全体のプロパティであると私は信じているので、あなたができることはその特定のポイントを描くことだけです...これはあなたが達成しようとしていることかもしれません。
色やテクスチャで塗りつぶされた空のビューを上に置き、@ AnkitSrivastavaの回答を使用して、ビューの背景の一部をタッチでこすり落とし、背後に隠された画像を表示してみませんか。
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *t = [[touches allObjects] objectAtIndex:0];
float alpha = [t locationInView:self.view].x / self.view.frame.size.width;
_img.alpha = alpha;
}