2011-01-24 28 views
8

Kullanıcı çizgiler çizebiliyorsa bir uygulama geliştirmek istiyorum ancak düz çizgiler çizmek istemiyorum ancak kullanıcıların çizdiği çizgiyi göstermek istiyorum. Kullanıcı A noktasından B noktasına ulaştığında çizgiyi düzeltmek istiyorum (eğer kullanıcılar bunu istiyorsa).iPhone/iPad'de çizgi çizme

Bunu yapabilmek için, görünümü 0,0 (sol üst) ile başlayan ve 320,480 (iPhone için) ve 768,1024 (iPad için) (sağ altta) olan bir ızgaraya dönüştürmek istiyorum.

Bu soru için 10,10'da A noktasını ve 100,100'de B noktasını aldım.

Sorumu:
- Bu ızgarayı nasıl oluştururum?
- Bu noktaları nasıl oluştururum?
- Bu çizgiyi düzeltmeden nasıl çizebilirim?
- Düz çizgiyi nasıl çizebilirim?

Sorunum, "normal" kullanıcı arabirimi uygulamaları oluşturmaya aşina olduğumdur. Open-GL ect ile aşina değilim.

Umarım birisi bana bu konuda yardımcı olabilir.

Saygılarımızla,
Paul Peelen

+0

"Düzleştirme" sorununuzu ayrı bir soruya bölmenizi öneririz. – genpfault

+0

Tamam, yani adım 1 olarak düz çizgilerle başladığım ve daha sonra adım 2'de düz olmayan çizgilere devam ettiğim anlamına mı geliyor? –

+0

Bunu "opengl-es" olarak etiketlediniz - çiziminizi bununla mı yapıyorsunuz yoksa "yerli" çizim sistemi ile mi çalışıyorsunuz, Quartz? –

cevap

17

Sen UIView alt sınıf ve - (void)drawRect:(CGRect)rect yöntemini geçersiz.

İçeride bir grafik içeriği kapmak:

CGContextRef context = UIGraphicsGetCurrentContext(); 

Ve bunu yapmak için kullanabilirsiniz Çekirdek Grafik gibi çağırır:

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextBeginPath (context); 
for (k = 0; k < count; k += 2) { 
    CGContextMoveToPoint(context, s[k].x, s[k].y); 
    CGContextAddLineToPoint(context, s[k+1].x, s[k+1].y); 
} 
CGContextStrokePath(context); 

tüm ayrıntılar için Kuvars 2D Programlama Kılavuzu arayın.

+0

Harika, bir göz atacağım. –

+0

Aynı şey ile başlıyorum, herhangi bir örnek veya öğretici ... bu kodu nasıl kullanılacağını anlayamıyorum .. Herhangi bir yardım teşekkür teşekkürler – Dave

+0

Herhangi biri bana yukarıdaki kod nasıl kullanılır? –

0

Sen düz çizgi sürükleyebilir kullanıcı sürükle o başlayan ve nokta UIBezierPath ve CAShapeLayer kullanarak bir çizgi çizin biten dayalı: Bu hedefe ulaşmak için yardımcı olacaktır

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [[event allTouches] anyObject]; 
    startingPoint = [touch locationInView:baseHolderView]; 

} 
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    endingPoint = [touch locationInView:baseHolderView]; 
    [self makeLineLayer:baseHolderView.layer lineFromPointA:startingPoint toPointB:endingPoint]; 
} 

-(void)makeLineLayer:(CALayer *)layer lineFromPointA:(CGPoint)pointA toPointB:(CGPoint)pointB 
{ 
    CAShapeLayer *line = [CAShapeLayer layer]; 
    UIBezierPath *linePath=[UIBezierPath bezierPath]; 
    [linePath moveToPoint: pointA]; 
    [linePath addLineToPoint:pointB]; 
    line.path=linePath.CGPath; 
    line.fillColor = nil; 
    line.opacity = 2.0; 
    line.strokeColor = [UIColor blackColor].CGColor; 
    [layer addSublayer:line]; 
} 

Umut.

İlgili konular