나는 ipad에 대한 간단한 그래프를 만들려고합니다. QUARTZ를 사용하여 sin (x), cos (x) 및 tan (x) 함수를 그려야합니다. 그리드와 라인을 만드는 방법을 알고 있지만 이것을 어떻게 시작해야할지 모르겠습니다. 어떤 도움을 주셔서 감사합니다.Quartz를 사용하여 선 그래프 그리기?
코어 플롯 및 기타 프레임 워크에 관심이 없으므로이 답변을 제공하지 마십시오.
나는 ipad에 대한 간단한 그래프를 만들려고합니다. QUARTZ를 사용하여 sin (x), cos (x) 및 tan (x) 함수를 그려야합니다. 그리드와 라인을 만드는 방법을 알고 있지만 이것을 어떻게 시작해야할지 모르겠습니다. 어떤 도움을 주셔서 감사합니다.Quartz를 사용하여 선 그래프 그리기?
코어 플롯 및 기타 프레임 워크에 관심이 없으므로이 답변을 제공하지 마십시오.
간단 : 원하는 해상도/정밀도를 결정한 다음 함수 도메인을 그 간격에 따라 분할하면 각 간격의 함수 값이 계산되고 직선으로 연결됩니다.
- drawRect:
에서
// Within a subclass of UIView
- (void)drawFunction:(double (*)(double))fn from:(double)x1 to:(double)x2
{
[super drawRect:rect];
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGFloat comps[] = { 1.0, 0.0, 0.0, 1.0 };
CGContextSetStrokeColor(ctx, comps);
CGContextSetLineWidth(ctx, 2.0);
const double dx = 0.01; // precision
double scale_x = self.bounds.size.width/(x2 - x1);
double off_x = 0.0;
double scale_y = scale_x;
double off_y = self.bounds.size.height/2;
CGContextMoveToPoint(ctx, x1 * scale_x - off_x, off_y - fn(x1) * scale_y);
for (double x = x1 + dx; x <= x2; x += dx) {
double y = fn(x);
CGFloat xp = x * scale_x - off_x;
CGFloat yp = off_y - y * scale_y;
CGContextAddLineToPoint(ctx, xp, yp);
}
CGContextStrokePath(ctx);
}
콜이 :
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
[self drawFunction:sin from:0.0 to: 2 * M_PI];
}
안녕하세요 답변에 대한 감사하지만 이것은 무언가를 그리거나 무언가를 놓치고있다 –
@JamesDouglas (나는 거의 당신이 "hey this was not !!!!!"로 돌아올 것이라고 확신했다.) 확실히. 크기, 한계에주의를 기울여서 스트로크 색상과 선폭을 설정하십시오. 끝 부분에서'CGContextStrokePath()'를 호출하십시오.'CGContexRef' 문서를 읽어보십시오. –
그래도 재생할 수 있습니다. Lol –
핵심 플롯 어쨌든 함수 그래프를 그릴하지 않습니다. –