1

私のアプリケーションには、mainvieという名前のビューがあります。アプリケーションを実行すると、メインビューが読み込まれ、背景画像が画面に読み込まれます(以下のコード)。ring_large.jpgがファイルとして追加されました。

- (void)drawRect:(CGRect)rect {
UIImage *image = [UIImage imageNamed:@"rink_large.jpg"];
CGPoint imagepoint = CGPointMake(10,0); 
[image drawAtPoint:imagepoint];
}

これは問題なく機能します。問題が発生しているのは、この上に別の画像を描画しようとしているときです。他の場所(mainviewcontroller.mという名前のファイル)-タッチで、タッチの場所を取得し、その場所に画像を描画しようとしています。以下にリストされているのは私のコードです。配置しようとしている画像がまったく描画されない理由がわかりません。私がこれをコメントアウトしたので、リンク画像の後ろに描画されていないと確信しています。クリックしても画像は描画されません。これが、画像を描画するためのタッチ開始機能です。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
     CGPoint location = [[touches anyObject] locationInView:mainView];
    UIImage *image = [UIImage imageNamed:@"small_cone.png"];
    [image drawAtPoint:location];
}

どこかに触れても画像が描画されない理由を誰かが理解できますか?touchesBegan関数は、画面がどこかにタッチされたときに開始されますが、画像は表示されません。あなたの助けに感謝します、私は客観的に新しいです-c。

4

1 に答える 1

2

UIImage drawAtPointは、現在のグラフィックスコンテキスト内で画像を描画します。グラフィックコンテキストを定義していません。drawRect(元のコードがある場所)には、すでにグラフィックスコンテキストがあります。基本的に、UIImageに描画する場所を指示しますが、描画する場所は指示しませ

次のようなものが必要です。

CGPoint location = [[touches anyObject] locationInView:mainView];

UIGraphicsBeginImageContext(mainView.bounds.size);
UIImage *image = [UIImage imageNamed:@"small_cone.png"];
[image drawAtPoint:location];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

ただし、これでは元の画像が保持または考慮されません。両方を重ねて描画する場合は、両方の画像にdrawAtPointを使用します。

CGPoint location = [[touches anyObject] locationInView:mainView];

UIGraphicsBeginImageContext(mainView.bounds.size);

UIImage *image = [UIImage imageNamed:@"rink_large.jpg"];
CGPoint imagepoint = CGPointMake(10,0);
[image drawAtPoint:imagepoint];

image = [UIImage imageNamed:@"small_cone.png"];
[image drawAtPoint:location];

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

これで、両方の画像の合成を含むnewImageで何かを行うことができます。

于 2012-10-25T03:07:20.583 に答える