質問

内部に大きなイメージビューを持つ NSScrollview があります。nsscrollview 内のイメージビュー上にプログラムでイメージビューをプロットしようとしています。次のように考えてください。NSScrollView 内に世界地図 (NSImageView) があります。ユーザーがドロップダウン リストから国を選択すると、世界地図 (NSImageview) 内のその国の (x,y) ポイントを取得します。ここで、ワールドマップ上の指定された (x,y) 点に小さな画像 (赤いポインター) を描画する必要があります。問題は、イメージを描画すると、間違った領域にプロットされることです。

    self.pimg = [[NSImageView alloc] initWithFrame:NSMakeRect (0, 0, 30, 30)];
    [self.pimg setImage: image];
//self.pimg is the pointing image to be drawn over the worldmap
    [self.pimg setImageFrameStyle:NSImageFrameNone];
    [self.pimg setImageScaling:NSOnState];
//
    [self.scrollView.contentView addSubview:self.pimg];

原点に描画されるかどうかを確認するため、x,yに(0,0)を入力しました。画面の中央のどこかに描画されます。

編集: スクロールビューの原点に描画されます。これらのポイントを大きな画像のポイントに変換するにはどうすればよいですか?

役に立ちましたか?

解決

サブビューとして画像をWorldMapimage(大きな画像ビュー)に追加します。これにより、ワールドマップ画像に従って画像ポイントが変換されます。

 self.pimg = [[NSImageView alloc] initWithFrame:NSMakeRect (0, 0, 30, 30)];
 [self.pimg setImage: image];
//self.pimg is the pointing image to be drawn over the worldmap
  [self.pimg setImageFrameStyle:NSImageFrameNone];
  [self.pimg setImageScaling:NSOnState];

  //Updated line of code
  [self.largeImageView addSubview:self.pimg]; //Add subview to the largeimageview(world map)

他のヒント

あなたが提供した情報では何とも言えませんが、 NSView 方法

- (NSRect)convertRect:(NSRect)aRect toView:(NSView *)aView

したがって、ワールドマップがスクロールビューのサブビューであると仮定すると、おそらく...

[scrollview convertRect:self.pimg.frame toView:worldmap]

これは、ワールドマップ ビューのポイント参照システムのフレームを返します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top