Domanda

Ho un NSSCrollView che ha un grande ImageView al suo interno. Sto cercando di tracciare una ImageView programmaticamente tramite ImageView all'interno di NSSCrollView. Pensalo in questo modo. Ho una mappa mondiale (NSIMAGEVIEW) all'interno di un NSSCrollView. L'utente seleziona un paese dall'elenco a discesa e ottengo i punti (x, y) per quel paese in Worldmap (NSIMAGEVIEW). Ora devo disegnare una piccola immagine (un puntatore rosso) sulla mappa mondiale nei punti dati (x, y). Il problema è che quando disegno l'immagine viene tracciata nell'area sbagliata.

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

Ho inserito (0,0) come x, y per verificare se viene disegnato sull'origine. Viene disegnato da qualche parte nel mezzo dello schermo.

MODIFICARE: Viene disegnato all'origine di ScrollView. Come tradotto questi punti nei punti di grande immagine?

È stato utile?

Soluzione

Aggiungi la tua immagine come sottoview alla tua WorldMapImage (vista sull'immagine di grandi dimensioni). Ciò tradurrà i punti di immagine secondo l'immagine della tua mappa del mondo.

 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)

Altri suggerimenti

Con le informazioni che hai dato è difficile da dire, ma potresti provare a usare il NSView metodo

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

Quindi supponendo che la tua mappa mondiale sia una sottovisione sul tuo ScrollView, forse ...

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

Che restituirà un frame nel sistema di riferimento a punti della vista Mondiale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top