1

異なる辺のポリゴンを描きたい(4-12)。ポリゴンを描画するためのロジックは何ですか。たとえば、ユーザーが 6 辺を選択した場合は六角形を描画し、8 辺を入力した場合は八角形を描画する必要があります。次のコードを見つけましたが、ポリゴンを描画している UIView のサイズを変更して、ビュー内の形状もビューと共に成長するようにしたいと考えています。どんな体でも私を助けてください。以下は私が現在使用しているコードですが、ビューのサイズを変更してビュー内の別の位置に移動するときにも中央に配置されません。

    int radius = MINIMUM(widht, height)*0.4 ;

     for (int i = 0; i < _numberOFsides; i++){

            CGPoint point = CGPointMake(widht/2+radius *cosf(i*2*M_PI/_numberOFsides), widht/2+radius*sinf(i*2*M_PI/_numberOFsides));

            if (i==0) {

                [_shapePath moveToPoint:point];

            }
            else{
                [_shapePath addLineToPoint:point];

                [_shapePath stroke];
            }

        }
4

2 に答える 2

1

UIBazierPath のサイズを変更するには、以下のコードを追加します。

CGRect bazierRect = CGPathGetBoundingBox(bezierpath.CGPath)
CGFloat scaleX = view.frame.size.width / bazierRect.frame.size.width;
CGFloat scaleY = view.frame.size.height / bazierRect.frame.size.height;
CGAffineTransform transform = CGAffineTransformMakeScale(scaleX, scaleY);
CGPathRef newPath = CGPathCreateCopyByTransformingPath(bezierpath.CGPath, &transform);
bezierPath.CGPath = newPath;
CFRelease(newPath);
于 2013-03-05T09:40:02.277 に答える
0

任意の数の辺を持つ正多角形を作成する場合は、次のコードで各エッジの頂点が得られ、サイズと辺の数を簡単に変更できます。

int n = 10; //number of edges
float j = 20; //length of each edge
float x = 130;
float y = 250;//the point 130,250 will be at the bottom of the figure
float angle = 2*M_PI;
for (int i = 0; i < n; i++) {

    CGRect frame = CGRectMake(x, y, 2, 2);//put a dot on x,y
    NSLog(@"%f | %f, %f", angle, x, y);
    x = x + j*cosf(angle); 
    y = y + j*sinf(angle); //move to the next point
    angle = angle - 2*M_PI/n; //update the angle

    //display the dot
    UIView *rect = [[UIView alloc] initWithFrame:frame];
    rect.backgroundColor = [UIColor blueColor];
    [self.view addSubview:rect];  
} 

お役に立てれば。ご不明な点がございましたら、お気軽にお問い合わせください。素晴らしい一日をお過ごしください。

〜致命的なヤマアラシ

于 2013-07-11T15:09:57.630 に答える