我正在構建一個應用程序,我希望向用戶展示平面圖,這是互動的,這意味着他們可以點擊每個區域放大這些圖像並找到更精細的細節。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