2

タッチ移動でプロジェクトを作成しています。タッチしたポイントでの画像のアルファまたは可視性(可能な限り)を変更したいと思います。その特定の画像のポイントを再表示するとしましょう。

PS私はすでに画像を消去する方法を知っています。消去を探しています

4

6 に答える 6

2

このプロジェクトはあなたが探しているものを正確に実行すると思います:https ://github.com/SebastienThiebaud/STScratchView

2つの画像があり、1つは非表示の画像で、もう1つはスクラッチした画像です。

またはこのプロジェクトでさえ:http://www.cocoacontrols.com/platforms/ios/controls/scratch-n-see

于 2013-01-07T00:22:41.920 に答える
1

私のブログからコピーされているため、コードの形式が適切でないことをお詫び申し上げます。編集にはかなり時間がかかります。

1触れた部分を非表示にします。

指が動いたら、いくつかの部分を消去します。

- (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;}

2画像は最初は見えません。たとえば、透明です。

ポイントをタッチしてから、タッチしたポイントで円を計算し、最後に円のピクセルのアルファを変更します。

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);}

上記がお役に立てば幸いです。面白い質問です。後で実行可能なデモを行いたいと思います。

于 2013-01-07T04:18:25.217 に答える
0
 - (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);

  }
于 2013-01-02T11:33:48.820 に答える
0

アルファはビュー全体のプロパティであると私は信じているので、あなたができることはその特定のポイントを描くことだけです...これはあなたが達成しようとしていることかもしれません。

于 2012-12-28T11:31:17.387 に答える
0

色やテクスチャで塗りつぶされた空のビューを上に置き、@ AnkitSrivastavaの回答を使用して、ビューの背景の一部をタッチでこすり落とし、背後に隠された画像を表示してみませんか。

于 2013-01-05T15:04:28.990 に答える
-1
-(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;
}
于 2013-01-03T13:11:25.630 に答える