Pregunta

Tengo un NSSCrollView que tiene una vista grande de ImageView dentro de él. Estoy tratando de trazar un ImageView programáticamente a través de ImageView dentro de NSSCrollView. Piense en ello así. Tengo un Mapas de World (NSIMAGEVIEW) dentro de un NSSCrollView. El usuario selecciona un país desde la lista desplegable y obtengo los puntos (x, y) para ese país en Worldmap (NSIMAVEVIEW). Ahora tengo que dibujar una imagen pequeña (un puntero rojo) sobre el mapa mundial en los puntos dados (x, y). El problema es que cuando dibujo la imagen se traza en el área equivocada.

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

Entré (0,0) como x, y para verificar si se dibuja en el origen. Se dibuja en algún lugar en el medio de la pantalla.

EDITAR: Se dibuja en el origen de ScrollView. ¿Cómo traducoy estos puntos a los puntos de la imagen grande?

¿Fue útil?

Solución

Agregue su imagen como subvisión a su WorldMapimage (vista de imagen grande). Esto traducirá los puntos de imagen según la imagen de su 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)

Otros consejos

Con la información que ha dado es difícil de decir, pero podría intentar usar el NSView método

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

Así que suponiendo que su Mapa de Mundo sea una subvisión en su View Scroll, tal vez ...

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

Que devolverá un marco en el sistema de referencia de puntos de la vista WorldMap.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top