私はこのような何かしたい:(光部品、背景を無視する)Core Graphics - Macを使用して三角形を描く方法は?
どのように私はココアを使用して、これを描くことができますか? drawRect:
に?私は描く方法を知らない。
私はこのような何かしたい:(光部品、背景を無視する)Core Graphics - Macを使用して三角形を描く方法は?
どのように私はココアを使用して、これを描くことができますか? drawRect:
に?私は描く方法を知らない。
使用NSBezierPath
:
- (void)drawRect:(NSRect)rect
{
NSBezierPath *path = [NSBezierPath bezierPath];
[path moveToPoint:NSMakePoint(0, 0)];
[path lineToPoint:NSMakePoint(50, 100)];
[path lineToPoint:NSMakePoint(100, 0)];
[path closePath];
[[NSColor redColor] set];
[path fill];
}
これはあなたが始める必要があり、それは100×100サイズのビューの赤い三角形を描画します。もちろん、ハードコーディングされた値を使用する代わりに、ビューのサイズに基づいて座標を動的に計算します。
私は思ったよりずっと簡単です。ありがとう! – Names
ハ!ロゴのカメを思い出させる。 – Timo
[UIColor redColor] setFill]とCGPointMakeは違いますか? NSMakePointとCGPointMakeの違いはありますか? – futurevilla216
(1)スウィフト拡張を作成
// Centered, equilateral triangle
extension UIBezierPath {
convenience init(equilateralSide: CGFloat, center: CGPoint) {
self.init()
let altitude = CGFloat(sqrt(3.0)/2.0 * equilateralSide)
let heightToCenter = altitude/3
moveToPoint(CGPoint(x:center.x, y:center.y - heightToCenter*2))
addLineToPoint(CGPoint(x:center.x + equilateralSide/2, y:center.y + heightToCenter))
addLineToPoint(CGPoint(x:center.x - equilateralSide/2, y:center.y + heightToCenter))
closePath()
}
}
(2)あなたは「描画する方法がわからない」場合は、あなたがすべきのdrawRect
override func drawRect(rect: CGRect) {
let path = UIBezierPath(
equilateralSide: self.bounds.size.width,
center: CGPoint(x: self.bounds.size.width/2, y: self.bounds.size.height/2))
self.tintColor.set()
path!.fill()
}
をオーバーライド次のいずれかまたは両方を読んでください:http://developer.apple.com/library/mac/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/ http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaDrawingGuide/ –