Ich mache ein Diagramm mit Quarz, nach diesem tutorial.Glatte Linien zeichnen Graph mit Quarz
Das ist mein hartcodierte Klasse:
#import "GraphView.h"
#define kGraphHeight 110
#define kDefaultGraphWidth 900
#define kOffsetX 0
#define kStepX 50
#define kStepY 50
#define kOffsetY 10
#define kGraphBottom 110
#define kGraphTop 0
#define kBarTop 10
#define kBarWidth 40
#define kCircleRadius 3
@implementation GraphView
float data[] = {0.7, 0.4, 0.9, 1.0, 0.2, 0.85, 0.11, 0.75, 0.53, 0.44, 0.88, 0.77, 0.99, 0.55};
- (void)drawLineGraphWithContext:(CGContextRef)ctx
{
CGContextSetLineWidth(ctx, 0.2);
CGContextSetStrokeColorWithColor(ctx, [[UIColor colorWithRed:1.0 green:0.5 blue:0 alpha:1.0] CGColor]);
int maxGraphHeight = kGraphHeight - kOffsetY;
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx, kOffsetX, kGraphHeight - maxGraphHeight * data[0]);
for (int i = 1; i < sizeof(data); i++)
{
CGContextAddLineToPoint(ctx, kOffsetX + i * kStepX, kGraphHeight - maxGraphHeight * data[i]);
}
CGContextDrawPath(ctx, kCGPathStroke);
CGContextSetFillColorWithColor(ctx, [[UIColor colorWithRed:1.0 green:0.5 blue:0 alpha:1.0] CGColor]);
}
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetAllowsAntialiasing(context, true);
for (int i = 0; i < sizeof(data); i++)
{
[self drawLineGraphWithContext:context];
}
}
@end
Und das ist das Ergebnis:
Wie Sie sehen können, werden die Linien nicht weniger glatt sein kann. Sie sehen überhaupt nicht gut aus. Mit Antialiasing versucht, aber nichts geändert, wie kann ich die Linienqualität verbessern?
Danke!
Sie haben Recht, ich bin so f! @ # Beschämt. Ich zeichnete und zeichnete, deshalb sah es so schlecht aus. Das Entfernen der for-Schleife von drawRect hat es getan. – ferostar