0

カスタム画像トリミングを提供するアプリケーションを作成しています…。ユーザーが長方形を使用して画像の一部を選択します。長方形のサイズを変更し、ユーザーごとに移動して、その部分を切り抜くことができます……</ p>

次の方法を使用してその部分をトリミングできるように、画像を修正したい

次の方法で画像を切り抜くことができます

-(void) cropImage
{
   CGSize size = iv.frame.size;

   CGRect rect = CGRectMake(size.width / 4, size.height / 4, size.width/2,size.height / 2);

   CGImageRef imageRef = CGImageCreateWithImageInRect([iv.image CGImage], rect);    
   UIImage *img = [UIImage imageWithCGImage:imageRef]; 

   CGImageRelease(imageRef);        

   // Display Image     
   UIImageView *imageView = [[UIImageView alloc] initWithImage:img];    
   [imageView setFrame:CGRectMake(70.0, 480.0,(size.width / 2), (size.height / 2))];    
   [scrollView addSubview:imageView]; 

   [imageView release];

   [scrollView scrollRectToVisible:imageView.frame animated:YES];

}

タッチでサイズを変更したり、タッチで移動したりできる四角形を描画するためのソリューションが必要です...

私はiPhoneを初めて使用するので、...plsはその方法を教えてくれます。

4

2 に答える 2

2

私はこのリンクImageCropperから良い例から私の答えを得ました..

誰かがこれより良いものを持っているなら、ここにそれを入れてください....それが私がその答えを受け入れるに値するなら

于 2012-10-03T05:18:18.663 に答える
0

UILongGestureこれは、 2本の指でを使用する簡単なアプローチです。選択長方形はタッチに限定されます。SelectionViewはUIView最初は非表示です。

これは、UIViewController:のジェスチャの初期化です。

UILongPressGestureRecognizer *twoFingerLongGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleTwoFingerLongGesture:)];
[twoFingerLongGesture setNumberOfTouchesRequired:2];
[self.view addGestureRecognizer:twoFingerLongGesture];

そして、これはジェスチャの処理です。

- (void)handleTwoFingerLongGesture:(UIGestureRecognizer *)sender
{
    switch (sender.state) {
        case UIGestureRecognizerStateBegan:
        {
            NSLog(@"mainView 2FingerLONG - UIGestureRecognizerStateBegan");
            CGPoint p1 = [sender locationOfTouch:0 inView:self.view];
            CGPoint p2 = [sender locationOfTouch:1 inView:self.view];
            [self updateFrameSelectionWithPoint1:p1 point2:p2];
            [self.view bringSubviewToFront:selectionView];
            selectionView.hidden = NO;
            break;
        }
        case UIGestureRecognizerStateChanged:
        {
            NSLog(@"mainView 2FingerLONG - UIGestureRecognizerStateChanged");
            CGPoint p1 = [sender locationOfTouch:0 inView:self.view];
            CGPoint p2 = [sender locationOfTouch:1 inView:self.view];
            [self updateFrameSelectionWithPoint1:p1 point2:p2];
            break;
        }
        case UIGestureRecognizerStateEnded:
        {
            selectionView.hidden = YES;
            // Here you must perform the selection
            break;
        }
        case UIGestureRecognizerStateCancelled:
        {
            selectionView.hidden = YES;
            break;
        }
        default:
            break;
    }
}

- (void) updateFrameSelectionWithPoint1:(CGPoint)p1 point2:(CGPoint)p2
{
    CGRect frameSelection;
    frameSelection.origin.x = fminf(p1.x, p2.x);
    frameSelection.origin.y = fminf(p1.y, p2.y);
    frameSelection.size.width = fabsf(p1.x - p2.x);
    frameSelection.size.height = fabsf(p1.y - p2.y);
    selectionView.frame = frameSelection;
}
于 2012-08-05T11:42:56.093 に答える