Pergunta

Eu tenho um NSSCROLLVIEW que tem uma grande visão de imagem dentro dele. Estou tentando plotar um ImageView programaticamente sobre o ImageView dentro do NSSCROLLVIEW. Pense assim. Agora eu tenho que desenhar uma imagem pequena (um ponteiro vermelho) sobre o mapa do mundo nos pontos dados (x, y). O problema é que, quando desenho a imagem, ela é plotada na área errada.

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

Eu digitei (0,0) como x, y para verificar se ele é desenhado na origem. É desenhado em algum lugar no meio da tela.

EDITAR: Ele é desenhado na origem do scrollView.Como traduzi esses pontos para os pontos da grande imagem?

Foi útil?

Solução

Adicione sua imagem como a subview à sua mapimage mundial (Vista de imagem grande). Isso traduzirá os pontos da imagem de acordo com a imagem do seu mapa mundial.

 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)

Outras dicas

Com as informações que você deu é difícil dizer, mas você pode tentar usar o NSView método

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

Então, assumindo que seu WorldMap é uma subview em seu scrollView, talvez ...

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

Que retornará um quadro no sistema de referência de ponto da visão do WorldMap.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top