문제

안에 큰 ImageView가있는 nsscrollView가 있습니다. NSSCrollView 내부의 ImageView를 통해 프로그래밍 방식으로 ImageView를 플로팅하려고합니다. NSSCrollView 내부에 WorldMap (NSimageView)이 있습니다. 사용자는 드롭 다운 목록에서 국가를 선택하고 WorldMap (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)를 입력했습니다.

편집하다: ScrollView의 원점에서 그려집니다.이 점을 어떻게 큰 이미지의 포인트로 변환합니까?

도움이 되었습니까?

해결책

이미지를 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

따라서 WorldMap이 ScrollView의 하위 뷰라고 가정하면 ...

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

WorldMap보기의 포인트 참조 시스템에서 프레임을 반환합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top