Frage

Ich habe eine NSSSCROLLView, die ein großes ImageView enthält. Ich versuche, ein ImageView programmatisch über die ImageView im NSSSCROLLView zu zeichnen. Stellen Sie sich das so vor. Ich habe in einem NSSCROLLVIEW eine Weltmap (NSIMageView). Der Benutzer wählt ein Land aus der Dropdown -Liste aus und ich erhalte die (x, y) Punkte für dieses Land in der Weltmap (NSIMageView). Jetzt muss ich an den angegebenen (x, y) Punkten ein kleines Bild (einen roten Zeiger) über die Weltmap zeichnen. Das Problem ist, dass es beim Zeichnen des Bildes im falschen Bereich gezeichnet wird.

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

Ich habe (0,0) als X eingegeben, um zu prüfen, ob es auf den Ursprung gezogen wird. Es wird irgendwo in der Mitte des Bildschirms gezeichnet.

BEARBEITEN: Es wird vom Ursprung der Scrollview gezeichnet. Wie übersetzt ich diese Punkte auf die Punkte des großen Bildes?

War es hilfreich?

Lösung

Fügen Sie Ihr Bild als Unteransicht zu Ihrem WorldMapimage (große Bildansicht) hinzu. Dadurch werden die Bildpunkte nach Ihrem Weltkartenbild übersetzt.

 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)

Andere Tipps

Mit den Informationen, die Sie gegeben haben, ist es schwer zu sagen, aber Sie könnten versuchen, die zu verwenden NSView Methode

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

Angenommen, Ihre Weltmap ist eine Unteransicht in Ihrem Scrollview, vielleicht ...

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

Dies gibt einen Rahmen im Punktreferenzsystem der WorldMap -Ansicht zurück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top