我正在构建一个应用程序,我希望向用户展示平面图,这是互动的,这意味着他们可以点击每个区域放大这些图像并找到更精细的细节。iOS:Quartz2d绘制平面图
我收到了来自后端的JSON响应,其中包含楼层平面图,形状信息和点的元数据信息。我打算解析点并使用石英在视图上绘制形状(开始学习Quartz2d)。作为开始,我拍了一张简单的蓝色印花,看起来像下面的图像。
根据蓝图,中心位于(0,0),有4个点。
以下是我从后台获取蓝图的要点。
X:-1405.52, Y:686.18
X:550.27, Y:683.97
X:1392.26, Y:-776.79
X:-1405.52, Y:-776.79
我极力把这个
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code
for (Shape *shape in shapes.shapesArray) {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
BOOL isFirstPoint = YES;
for (Points *point in shape.arrayOfPoints) {
NSLog(@"X:%f, Y:%f",point.x,point.y);
if (isFirstPoint) {
CGContextMoveToPoint(context, point.x, point.y);
//[bpath moveToPoint:CGPointMake(point.x,point.y)];
isFirstPoint = NO;
continue;
}
CGContextAddLineToPoint(context, point.x, point.x);
}
CGContextStrokePath(context);
}
}
问题:
我是我吗ñ实现这一目标的正确方向?
如何在-ve方向画点?
按照坐标,绘制将是非常巨大的,我想先画,然后缩小以适合屏幕,以便用户以后可以放大/平移等
更新:
我已经实现了一些使用翻译和缩放的基本功能。现在的问题是我如何适应所绘制的内容,到视图边界。由于我的坐标非常大,所以它会超出范围,我希望它适合。
请在下面找到我所拥有的测试代码。 任何想法如何适应它?
感谢您的信息。我不是OpenGL的专家,这就是我计划使用Quartz的原因。我的另一种方法是为每个形状创建多个uiview,这样我就可以拥有手势识别器,我正在重写代码。但是,再一个问题就是我给出了坐标,如果你检查截图,绘制的线条是不正确的。我在一些书中读到了 - 正确的坐标。 – anoop4real
我已经完成了翻译要点,我已经更新了我的答案......你可以看看它吗? – anoop4real