1
私は、tutorialに続いてQuartzでグラフを作成しています。クォーツで滑らかな線を描くグラフ
これは私のハードコーディングされたクラスです。
#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
そして、これが結果です:
あなたが見ることができるように、行は任意の少ないスムーズにすることはできません。彼らはよく見えません。アンチエイリアスを試みましたが、何も変更されませんでした。どうすれば回線の品質を改善できますか?
ありがとうございます!
あなたは正しいです、私はとてもf!@#恥ずかしいです。私は描画して再描画していたので、それはとても悪く見えました。 drawRectからforループを削除すると、それが実行されました。 – ferostar