Question

I have an NSScrollview which has a large imageview inside it.I am trying to plot an imageview programatically over the imageview inside the nsscrollview. Think of it like this.I have a worldmap(NSImageView) inside an NSScrollView.The user selects a country from the dropdown list and I get the (x,y) points for that country in the worldmap(NSImageview). Now I have to draw a small image(a red pointer) over the worldmap at the given (x,y) points. The problem is that when I draw the image it gets plotted at the wrong area.

    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];

I entered (0,0) as x,y to check whether It gets drawn on the origin.It gets drawn somewhere in the middle of the screen.

EDIT: It gets drawn at the origin of the scrollview.How do I translate these points to the large image's points?

Was it helpful?

Solution

Add your image as the subview to your worldmapimage (large image view). This will translate the image points as per your world map image.

 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)

OTHER TIPS

With the info you have given its hard to say but you could try using the NSView method

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

So assuming your worldmap is a subview on your scrollview, maybe...

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

Which will return a frame in the point reference system of the worldmap view.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top