【发布时间】: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