Как нарисовать треугольник с помощью Core Graphics - Mac? - PullRequest
4 голосов
/ 10 июля 2011

Я хочу что-то вроде этого: (легкая часть, игнорировать фон)

example triangle

Как я могу нарисовать это, используя Какао? В drawRect:? Я не умею рисовать.

Ответы [ 2 ]

20 голосов
/ 10 июля 2011

Использование 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];
}

Это должно помочь вам начать, он рисует красный треугольник на виде размером 100x100. Обычно вы вычисляете координаты динамически, исходя из размера представления, вместо использования жестко закодированных значений курса.

4 голосов
/ 12 декабря 2014

iOS + Swift

(1) Создание расширения Swift

// 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()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...