Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 绘制一个多边形并用背景图像填充它_Iphone_Objective C_Image_Polygon_Fill - Fatal编程技术网

Iphone 绘制一个多边形并用背景图像填充它

Iphone 绘制一个多边形并用背景图像填充它,iphone,objective-c,image,polygon,fill,Iphone,Objective C,Image,Polygon,Fill,我试图画一个有四个点(a,B)(C,D)(E,F)(G,H)的多边形,因此不一定是矩形 然后我想在多边形上应用图案图像 我研究了initWithPatternImage,colorWithPatternImage,UIBezierPath,CGContextStrokeLineSegments,但不知道如何把它们放在一起 有人知道怎么把它们放在一起吗 注意:我没有使用未测试的OpenGL,但它应该是这样工作的: - (void)drawRect:(CGRect)rect { UIColo

我试图画一个有四个点(a,B)(C,D)(E,F)(G,H)的多边形,因此不一定是矩形

然后我想在多边形上应用图案图像

我研究了
initWithPatternImage
colorWithPatternImage
UIBezierPath
CGContextStrokeLineSegments
,但不知道如何把它们放在一起

有人知道怎么把它们放在一起吗


注意:我没有使用未测试的OpenGL,但它应该是这样工作的:

- (void)drawRect:(CGRect)rect
{
    UIColor *color = [UIColor colorWithPatternImage:myPatternImage];
    [color set];

    UIBezierPath *path = [UIBezierPath bezierPath];
    [path moveToPoint:p1];
    [path addLineToPoint:p2];
    [path addLineToPoint:p3];
    [path addLineToPoint:p4];
    [path closePath]; // Implicitly does a line between p4 and p1
    [path fill]; // If you want it filled, or...
    [path stroke]; // ...if you want to draw the outline.
}

如果您想划过它,您可能需要通过
[path setLineWidth:5]设置线宽或类似的内容,并查看控制线条外观的其他属性。

有用的答案(并且很有用lol)。但我有一个问题,就是“背景”是用全白色填充的,而不是像我需要的那样透明。给我买了一个班轮吗?我尝试了self.opaque=NO和self.layer.opaque=NO,还使用clearColor显式地绘制了整个矩形(将背景变成黑色而不是白色或透明)。谢谢你让我达到90%的目标@MichaelKernahan:它应该是
self.opaque=NO;self.backgroundColor=[UIColor clearColor]在您的视图设置中。哈!你完全正确,我是个白痴。我将UIView的子类添加到xib中,并将“透明”内容放在initWithFrame中—不会调用它。简单地在XIB和voila中更新。谢谢