これは説明するのが難しい問題です...しかし、私は最善を尽くします。最初に問題の背景、基本的に私はios用のアプリのようなペイントを作成していて、ユーザーが画像の一部を選択して(マルチタッチは不透明な長方形を示します)、削除/コピー-貼り付け/回転できる機能を追加したいと考えていましたその部分。削除とコピー&ペーストは完全に機能していますが、ローテーションは別の話です。画像の一部を回転させるには、まず画像の一部をコピーして、選択した長方形のレイヤーの背景に設定します。次に、ユーザーはスライダーを使用して任意の角度で回転します。問題は、画像が長方形の別の場所から表示されることがあることです(つまり、コピーされた画像が長方形の間違った角にぶら下がっています)。これは私のrectangle.frameの問題かもしれないと思いました。起源ですが、その値はさまざまなテストを通じて正しいようです。ドラッグの進む方向によっても変わるようです...
これらは問題の画面です
上記の各ケースで、画像の不一致部分は灰色の長方形の内側にあるはずです。問題が何であるかについて私は途方に暮れています。
bg = [[UIImageView alloc] initWithImage:[self crop:rectangle.frame:drawImage.image]];
[rectangle addSubview:bg];
drawImageはユーザーが描画し、長方形は選択された灰色の領域です。クロップは、特定のrectから特定の画像の一部を返すメソッドです。
また、任意に回転させた画像を貼り付けるのに問題があります。その方法について何かアイデアはありますか?
編集:コードを追加します。
-(void)drawRect:(int)x1:(int)y1:(int)x2:(int)y2{
[rectangle removeFromSuperview];
rectangle = [[UIView alloc] initWithFrame:CGRectMake(x1, y1, x2-x1, y2-y1)];
rectangle.backgroundColor = [UIColor colorWithRed:0.9 green:0.9 blue:0.9 alpha:0.6];
selectionImage = drawImage.image;
drawImage.image = selectionImage;
[drawImage addSubview:rectangle];
rectangleVisible = true;
rectangle.transform = transformation;
長方形の描き方と関係がありますか?(上)touchesMovedメソッド(下)の一部からこのメソッドを呼び出します。これにより問題が発生する可能性があります(タッチ1が間違った位置にあると、幅が負になる可能性がありますか?)、そうであれば、これを修正する簡単な方法はありますか?
if([[event allTouches] count] == 2 && !drawImage.hidden){
NSSet *allTouches = [event allTouches];
UITouch *touch1 = [[allTouches allObjects] objectAtIndex:0];
UITouch *touch2 = [[allTouches allObjects] objectAtIndex:1];
[self drawRect:[touch1 locationInView:drawImage].x :[touch1 locationInView:drawImage].y:
[touch2 locationInView:drawImage].x :[touch2 locationInView:drawImage].y];
}