0

我有一个 NSScrollview,里面有一个大的 imageview。我试图以编程方式在 nsscrollview 内的 imageview 上绘制一个 imageview。可以这样想。我在 NSScrollView 中有一个世界地图(NSImageView)。用户从下拉列表中选择一个国家,我在世界地图(NSImageview)中获得该国家的(x,y)点。现在我必须在给定 (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 以检查它是否被绘制在原点上。它被绘制在屏幕中间的某个地方。

编辑:它被绘制在滚动视图的原点。如何将这些点转换为大图像的点?

4

2 回答 2

1

根据您提供的信息很难说,但您可以尝试使用该NSView方法

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

所以假设你的世界地图是你滚动视图的一个子视图,也许......

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

这将在世界地图视图的点参考系统中返回一个框架。

于 2013-11-08T08:31:33.150 回答
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)
于 2013-11-08T08:28:48.243 回答