Quiero dibujar una onda sinusoidal móvil con frecuencia variable y amplitud variable de una manera nítida y antialias. ¿Cómo es esto posible?Dibujar una onda sinusoidal móvil suavizada
6
A
Respuesta
11
Bueno, implementado onda sinusoidal en el método drawRect UIView como sigue:
float x=75;
float yc=50;
float w=0;
while (w<=rect.frame.size.width) {
CGPathMoveToPoint(path, nil, w,y/2);
CGPathAddQuadCurveToPoint(path, nil, w+x/4, -yc,w+ x/2, y/2);
CGPathMoveToPoint(path, nil, w+x/2,y/2);
CGPathAddQuadCurveToPoint(path, nil, w+3*x/4, y+yc, w+x, y/2);
CGContextAddPath(context, path);
CGContextDrawPath(context, kCGPathStroke);
w+=x;
}
Aquí x sería la anchura de cada onda sinusoidal, mientras que y es la altura del marco. Esto dibujaría el número de ondas sinusoidales para que quepan en todo el UIViewFrame. Produciría una onda sinusoidal de aspecto nítido y yc como mango de control. Inténtalo, puede que te guste.
Si el ancho es decir. x es similar al ancho del marco, entonces se producirá una onda sinusoidal única.
Número de onda sinusoidal completa = (anchura de trama)/(anchura de 'x' de cada onda sinusoidal)
1
hizo una versión más completa, y rápida de la versión de GeneratorOfOne. Este también llena el fondo de la ola con un color elegido:
class WaveView: UIView {
private var maskPath: UIBezierPath!
@IBInspectable var fillColor: UIColor = UIColor.blueColor()
@IBInspectable var cycles: CGFloat = 7
override func drawRect(rect: CGRect) {
var w: CGFloat = 0 // Starting position
let width = rect.width
let y: CGFloat = rect.height
let yc: CGFloat = rect.height/2
let x = width/cycles
let context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, UIColor.greenColor().CGColor);
let path = CGPathCreateMutable();
CGPathMoveToPoint(path, nil, 0, 0)
while (w<=rect.width) {
CGPathMoveToPoint(path, nil, w,y/2);
CGPathAddQuadCurveToPoint(path, nil, w+x/4, -yc, (w+x/2), y/2);
CGPathMoveToPoint(path, nil, w+x/2,y/2);
CGPathAddQuadCurveToPoint(path, nil, w+3*x/4, y+yc, w+x, y/2);
w+=x;
}
CGPathAddLineToPoint(path, nil, rect.width, rect.height)
CGPathAddLineToPoint(path, nil, 0, rect.height)
CGPathAddLineToPoint(path, nil, 0, y/2);
CGPathCloseSubpath(path)
maskPath = UIBezierPath(CGPath: path)
maskPath.lineCapStyle = CGLineCap.Square
maskPath.lineJoinStyle = CGLineJoin.Miter
CGContextAddPath(context, path);
CGContextSetFillColorWithColor(context, fillColor.CGColor)
CGContextFillPath(context)
}
}
Cuestiones relacionadas
- 1. dibujando onda sinusoidal usando opencv
- 2. Crear onda sinusoidal o cuadrada en C#
- 3. NAudio tocando una onda sinusoidal durante x milisegundos usando C#
- 4. Ruido en el fondo al generar onda sinusoidal en Java
- 5. Generación de sonido de onda sinusoidal en Python
- 6. Determinar si un conjunto de datos se aproxima a una onda sinusoidal
- 7. onda sinusoidal que ralentiza lentamente la frecuencia de f1 a f2 durante un tiempo determinado
- 8. Cómo escalar una imagen en iOS, suavizada pero no suave?
- 9. ¿Cómo dibujar la forma de onda de la grabación de audio de Android?
- 10. Inestabilidad mientras NDSolvera una ecuación de onda
- 11. ¿Cómo dibujar la forma de onda del reproductor de música de Android?
- 12. Mostrar una forma de onda de audio usando C#
- 13. clases de ajuste sinusoidal para C#
- 14. Eliminación de ruido sinusoidal con filtro Butterworth
- 15. Android Audio - Streaming generador de tono sinusoidal comportamiento impar
- 16. AVAudioPlayer - Metering - Quiere construir una forma de onda (gráfico)
- 17. Reproducción de una forma de onda (matriz flotante) como sonido
- 18. Haz una onda animada con drawPolyline en PySide/PyQt
- 19. representando una forma de onda en un iphone
- 20. Identificación de formas de onda periódicas comunes (cuadrados, seno, diente de sierra, ...)
- 21. Gráfico gráfico en tiempo real (forma de onda)
- 22. Cómo dibujar una forma borrosa?
- 23. ¿Cómo cortar la onda transportadora en Rspec?
- 24. Visualización de formas de onda en Ruby
- 25. banda limitada generación de forma de onda
- 26. Cómo dibujar una imagen en una ventana?
- 27. cómo dibujar una línea en una imagen?
- 28. matiz Hue a longitud de onda
- 29. Modificar FullCalendar en una versión móvil
- 30. Calculando una media móvil en F #
No se mueve la onda sinusoidal – AndrewK