【问题标题】:Wrong postion when plotting an nsiamgeview over an nsscrollview?在 nsscrollview 上绘制 nsiamgeview 时位置错误?
【发布时间】:2013-11-08 07:11:51
【问题描述】:

我有一个 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 以检查它是否被绘制在原点上。它被绘制在屏幕中间的某个地方。

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

【问题讨论】:

  • 我试过你的代码,图像定位在滚动视图的原点,即滚动视图的左下角。这不是你所期望的吗?
  • 由于您将图像视图作为子视图添加到滚动视图,因此框架位于滚动视图的原点,而不是窗口的原点。
  • 我想将它添加到大图像的原点(世界地图)。如何将这些点转换为图像的点?
  • 检查我的答案。将您的图像作为子视图添加到您的 worldmapimageview 而不是滚动视图

标签: objective-c macos cocoa nsscrollview nsimageview


【解决方案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)

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

    • 世界地图位于滚动视图的图像井中。我使用 [self.scrollView.contentView addSubview:self.pimg] 将新的图像视图添加到世界地图;
    • 使用返回的rect设置pimg的frame
    猜你喜欢
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    相关资源
    最近更新 更多