0
A
回答
5
(這是編輯把喬納森Grynspan的建議,只是使用的輔助函數來創建路徑,它現在還允許修剪邊角的高度是從它的寬度不同。)
這裏是一個幫助ç - 功能創建一個這樣的路徑:
// Note: caller is responsible for releasing the returned path
CGPathRef createAngledCornerRectPath(CGRect rect,
CGSize cornerSize,
CGFloat strokeWidth)
{
CGMutablePathRef p = CGPathCreateMutable();
// Make points for the corners
CGFloat inset = strokeWidth/2; // because the stroke is centered on the path.
CGPoint tlc = CGPointMake(CGRectGetMinX(rect) + inset,
CGRectGetMinY(rect) + inset);
CGPoint trc = CGPointMake(CGRectGetMaxX(rect) - inset,
CGRectGetMinY(rect) + inset);
CGPoint blc = CGPointMake(CGRectGetMinX(rect) + inset,
CGRectGetMaxY(rect) - inset);
CGPoint brc = CGPointMake(CGRectGetMaxX(rect) - inset,
CGRectGetMaxY(rect) - inset);
// Start in top left and move around counter-clockwise.
CGPathMoveToPoint(p, NULL, tlc.x, tlc.y+cornerSize.height);
CGPathAddLineToPoint(p, NULL, blc.x, blc.y-cornerSize.height);
CGPathAddLineToPoint(p, NULL, blc.x+cornerSize.width, blc.y);
CGPathAddLineToPoint(p, NULL, brc.x-cornerSize.width, brc.y);
CGPathAddLineToPoint(p, NULL, brc.x, brc.y-cornerSize.height);
CGPathAddLineToPoint(p, NULL, trc.x, trc.y+cornerSize.height);
CGPathAddLineToPoint(p, NULL, trc.x-cornerSize.width, trc.y);
CGPathAddLineToPoint(p, NULL, tlc.x+cornerSize.width, trc.y);
CGPathCloseSubpath(p);
return p;
}
這裏是你將如何使用這把定製的視圖的-drawRect:方法:
- (void)drawRect:(CGRect)rect
{
// Define a few parameters
CGSize cornerSize = CGSizeMake(30.f, 30.f);
CGFloat strokeWidth = 3.f;
CGColorRef strokeColor = [UIColor redColor].CGColor;
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(c, strokeColor);
CGContextSetLineWidth(c, strokeWidth);
// Create the path, add it to the context, and stroke it.
CGPathRef path = createAngledCornerRectPath(rect,
cornerSize,
strokeWidth);
CGContextAddPath(c, path);
CGContextStrokePath(c);
// we are responsible for releasing the path
CGPathRelease(path);
}
0
我只想用8條線段(啓動路徑,增加行路,末端路徑,行程路徑)。 您只需在每個x或y角座標上添加或減去一些常量即可獲得全部8個點。您可以使用與CGStrokeRect相同的API編寫一個簡單的函數來封裝所有上述內容。
相關問題
- 1. 如何用OpenCV繪製圓角矩形(帶圓角的矩形)?
- 2. 如何在圓角矩形內或圓形內繪製圖像?
- 3. 在矩形上繪製圓形
- 4. 在圓形公式上繪製矩形
- 5. 如何繪製圓角矩形而不填充(在MFC中)?
- 6. Java - 繪製具有兩個圓角的矩形
- 7. 在BufferedImage上繪製帶有不透明度的圓角矩形
- 8. 圓角矩形框繪製-iOS
- 9. 用Android Canvas繪製圓角矩形
- 10. 繪製一個圓角矩形編程
- 11. 繪製帶有彩色圓角邊框的矩形形狀
- 12. Box2D的矩形體具有圓角
- 13. Delphi的繪製一個閉合矩形的兩個圓角和矩形角
- 14. 繪製矩形和橢圓
- 15. 圓角矩形在pygtk的
- 16. 如何在android錄像機上手動繪製圓形,矩形
- 17. 在UIView上繪製自定義的圓角矩形UIBezierPath
- 18. 在圖框上繪製矩形 - 如何限制矩形區域?
- 19. ios繪製右上角的矩形
- 20. 如何繪製一個圓角的矩形?
- 21. 帶圓角矩形的SKScene
- 22. Silverlight中的圓角矩形
- 23. UIBezierPath - 帶圓角的矩形
- 24. 如何在Rebol中繪製和填充圓角矩形
- 25. 如何在Android UI中繪製圓角矩形?
- 26. UIBezierPath圓角矩形 - 角
- 27. 繪製矩形,然後繪製縮小矩形在先前的矩形內
- 28. 在矩形內繪製等距矩形
- 29. 在JPanel上繪製矩形
- 30. 在ImageVIew上繪製矩形
用什麼庫?你可以使用OpenGL ES或CGGeometry(或者甚至Cocos2d,但你可能不會)。 – 2010-08-28 17:23:37
這並不重要。只是尋找最簡單的解決方案 – Joshua 2010-08-28 19:43:12