2012-01-16 6 views
2

私はこの画像を赤色で示しています。私は絵の角にこの "髪型"を作成しようとしています。印刷されると、線は1ポイントの幅と15ポイントの長さを有するように意図されている。iPhone - 石英でヘアラインを作成しようとしています

enter image description here

これは...

1私が使用していたコードである)私が最初にすることは、水平方向と垂直方向に60点も大きいコンテキストを作成することですので、私は黒を描くことができますライン。

CGFloat newWidth = 60.0f + redImage.size.width; 
CGFloat newHeight = 60.0f + redImage.size.height; 

UIGraphicsBeginImageContextWithOptions(CGSizeMake(newWidth, newHeight), 
             YES, 
             [redImage scale]); 

そして、私はこれらの点は、順番に、4つの垂直ラインの各々の開始及び水平方向のそれぞれの開始を定義//

NSArray *startOfPoints = [NSArray arrayWithObjects: 
        [NSValue valueWithCGPoint:CGPointMake(15, 0)], 
        [NSValue valueWithCGPoint:CGPointMake(15 + redImage.size.width, 0.0f)], 
        [NSValue valueWithCGPoint:CGPointMake(15, 15 + redImage.size.height)], 
        [NSValue valueWithCGPoint:CGPointMake(15 + redImage.size.width, 15 + redImage.size.height)], 
        [NSValue valueWithCGPoint:CGPointMake(0, 15)], 
        [NSValue valueWithCGPoint:CGPointMake(15 + redImage.size.width,15)], 
        [NSValue valueWithCGPoint:CGPointMake(0, 15 + redImage.size.height)], 
        [NSValue valueWithCGPoint:CGPointMake(15 + redImage.size.width, 
                 15 + redImage.size.height)], 
        nil]; 

...ラインが起動定義ラインすると

、私はライン

CGContextRef c = UIGraphicsGetCurrentContext(); 

// go to the beginning of each vertical line and draw the line down 
    for (int i=0; i<4; i++) { 
     CGPoint aPoint = [[startOfPoints objectAtIndex:i] CGPointValue]; 
     CGContextBeginPath(c); 
     CGContextSetStrokeColorWithColor(c, [UIColor blackColor].CGColor); 
     CGContextSetLineWidth(c, 1.0f); 
     CGContextMoveToPoint(c, aPoint.x, aPoint.y); 
     CGContextAddLineToPoint(c, aPoint.x, aPoint.y + 15.0f); 
     CGContextStrokePath(c); 
    } 

// go to the beginning of each horizontal line and draw the line right 
    for (int i=5; i<9; i++) { 
     CGPoint aPoint = [[startOfPoints objectAtIndex:i] CGPointValue]; 
     CGContextBeginPath(c); 
     CGContextSetStrokeColorWithColor(c, [UIColor blackColor].CGColor); 
     CGContextSetLineWidth(c, 1.0f); 
     CGContextMoveToPoint(c, aPoint.x, aPoint.y); 
     CGContextAddLineToPoint(c, aPoint.x + 15.0f, aPoint.y); 
     CGContextStrokePath(c); 
    } 

を描くが、私は巨大な黒い四角で終わる...

私には何が欠けていますか?

注:このコードでは、赤いイメージが描画されていることを示していません。これは、行を正しく取得したいからです。私は、線の代わりに巨大な黒い四角形を取得しています。巨大な四角形は文脈の大きさを持ち、文脈を作成して黒で塗りつぶしても同じです。:(

+0

この図の最後の後に何をしますかコード?あなたは新しい画像グラフィックスコンテキストでこれをすべてやっていますが、画面上に表示するには画像をいつ取り出すのですか? – jrturton

+0

私は画面に表示されません、私は印刷します。表示されているコードは、イメージがない行を表示するはずです。なぜなら、私はイメージの描画を無効にするまでこのイメージを無効にしていますが、私が言ったように、大きな黒い四角形を取得します。それを黒で埋める。いいえ、線はない...素晴らしい。 – SpaceDog

答えて

1

UIGraphicsBeginImageContextWithOptionsを使用してビットマップグラフィックスコンテキストを作成すると、 (あなたがNOにopaqueを設定している場合)または透明(あなたがやったYESにopaqueを、設定している場合)ビットマップは黒ですべてゼロに初期化されます。

あなたが白でビットマップを埋めることができます実行して何かを描画する前にUIGraphicsBeginImageContextWithOptionsの直後に戻ります。

+0

それです。ありがとう!!!!!!!!!!!!!!!!!!!! – SpaceDog

関連する問題