I dies in Swift replizieren wollen .. Lesen weiter: How to draw a linear gradient arc with Qt QPainter?Zeichnen eines Farbverlauf in einem Bogen mit einer abgerundeten Kante
Ich habe herausgefunden, wie ein Gefälle ziehen innerhalb eines rechteckigen Ansicht:
override func drawRect(rect: CGRect) {
let currentContext = UIGraphicsGetCurrentContext()
CGContextSaveGState(currentContext)
let colorSpace = CGColorSpaceCreateDeviceRGB()
let startColor = MyDisplay.displayColor(myMetric.currentValue)
let startColorComponents = CGColorGetComponents(startColor.CGColor)
let endColor = MyDisplay.gradientEndDisplayColor(myMetric.currentValue)
let endColorComponents = CGColorGetComponents(endColor.CGColor)
var colorComponents
= [startColorComponents[0], startColorComponents[1], startColorComponents[2], startColorComponents[3], endColorComponents[0], endColorComponents[1], endColorComponents[2], endColorComponents[3]]
var locations: [CGFloat] = [0.0, 1.0]
let gradient = CGGradientCreateWithColorComponents(colorSpace, &colorComponents, &locations, 2)
let startPoint = CGPointMake(0, 0)
let endPoint = CGPointMake(1, 8)
CGContextDrawLinearGradient(currentContext, gradient, startPoint, endPoint, CGGradientDrawingOptions.DrawsAfterEndLocation)
CGContextRestoreGState(currentContext)
}
und wie ein arc
func drawArc(color: UIColor, x: CGFloat, y: CGFloat, radius: CGFloat, startAngle: CGFloat, endAngle: CGFloat, lineWidth: CGFloat, clockwise: Int32) {
let context = UIGraphicsGetCurrentContext()
CGContextSetLineWidth(context, lineWidth)
CGContextSetStrokeColorWithColor(context,
color.CGColor)
CGContextAddArc(context, x, y, radius, startAngle, endAngle, clockwise)
CGContextStrokePath(context)
}
mit dem Gradienten, die die gesamte Ansicht zeichnen aufnahm. Ich war mir nicht sicher, wie ich den Gradienten auf ein bestimmtes Gebiet beschränken sollte, also habe ich eine Unterklasse von UIView
erstellt, den Rahmen modifiziert und den Gradientencode (erstes Snippet) benutzt.
Für Bögen habe ich den zweiten Ausschnitt verwendet. Ich denke, ich kann einen Bogen zeichnen und dann am Ende des Bogens einen Kreis zeichnen, um den Bogen mit einer abgerundeten Oberfläche zu glätten. Wie kann ich dies tun und einen Verlauf über die Bogenform zeichnen?
Bitte geben Sie die lila Zeichen ignorieren. Das erste Bild ist der Beginn des Gradientenbogens aus meiner Spezifikation, das zweite ist das Ende des Gradientenbogens, unterhalb und links vom Anfangsbogen.
Wie kann ich das in Swift mit Core Graphics zeichnen?