Неправильная позиция при построении nsiamgeview поверх nsscrollview?

У меня есть NSScrollview, внутри которого есть большое изображение. Я пытаюсь программно построить изображение по изображению внутри nsscrollview. Подумайте об этом так. У меня есть карта мира (NSImageView) внутри NSScrollView. Пользователь выбирает страну из раскрывающегося списка, и я получаю точки (x, y) для этой страны на карте мира (NSImageview). Теперь мне нужно нарисовать маленькое изображение (красный указатель) на карте мира в заданных точках (x, y). Проблема в том, что когда я рисую изображение, оно отображается не в той области.

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

Я ввел (0,0) как x,y, чтобы проверить, рисуется ли он в начале координат. Он рисуется где-то в середине экрана.

EDIT: он рисуется в начале прокрутки. Как мне перевести эти точки в точки большого изображения?


person zzzzz    schedule 08.11.2013    source источник
comment
Я попробовал ваш код, изображение позиционируется в начале прокрутки, то есть в нижнем левом углу прокрутки. Разве это не то, что вы ожидаете?   -  person Neha    schedule 08.11.2013
comment
Поскольку вы добавляете свое изображение в качестве подпредставления для просмотра прокрутки, рамка располагается в начале прокрутки, а не в начале вашего окна.   -  person Neha    schedule 08.11.2013
comment
Я хочу добавить его в исходную точку большого изображения (карта мира). Как мне перевести эти точки в точки изображения?   -  person zzzzz    schedule 08.11.2013
comment
проверьте мой ответ. Добавьте свое изображение в качестве подвида в свой миркарта изображения вместо просмотра прокрутки.   -  person Neha    schedule 08.11.2013


Ответы (2)


Добавьте свое изображение в качестве подпредставления к вашему worldmapimage (большое представление изображения). Это переведет точки изображения в соответствии с изображением вашей карты мира.

 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)
person Neha    schedule 08.11.2013

С информацией, которую вы предоставили, трудно сказать, но вы можете попробовать использовать метод NSView

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

Итак, если предположить, что ваша карта мира является подвидом вашего прокрутки, может быть...

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

Что вернет кадр в системе отсчета точки представления карты мира.

person Warren Burton    schedule 08.11.2013
comment
Карта мира находится в области изображений в прокрутке. Я добавляю новое изображение на карту мира, используя [self.scrollView.contentView addSubview:self.pimg]; - person zzzzz; 08.11.2013
comment
Используйте возвращенный прямоугольник, чтобы установить кадр pimg - person Warren Burton; 12.11.2013