2013-11-08 3 views
0

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

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), а х, у, чтобы проверить, получает ли он нарисован на origin.It получает обращается где-то в середине экрана.

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

+0

Я пробовал ваш код, изображение попадает в начало прокрутки, в нижнем левом углу прокрутки. Разве это не то, чего вы ожидаете? – Neha

+0

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

+0

Я хочу добавить его в начало большого изображения (Карта мира). Как перевести эти точки на точки изображения? – zzzzz

ответ

1

Добавьте ваше изображение в качестве подзаголовка к вашему 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) 
1

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

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

Так предполагается, что ваш Worldmap является подтаблицами на вашем Scrollview, может быть ...

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

Который возвращает кадр в эталонной точке системы из Wo rldmap view.

+0

Карта мира находится на изображении на scrollview. Я добавляю новое изображение на карту мира, используя [self.scrollView.contentView addSubview: self.pimg]; – zzzzz

+0

В какой строке моего кода я должен добавить это? – zzzzz

+0

Используйте возвращенный прямоугольник для установки рамки pimg –