2014-09-10 2 views
-1

iOS가 아닌 Mac에서 실행되도록이 코드를 빌드하고 있습니다. 나는 스피노와 함께 거의 다 왔지만 데이터가 입력되면서 바늘을 위아래로 움직이는 수학을 이해하지 못한다. 나는 풍속을 실시간으로 측정하고 있으며, 풍속이 변할 때 바늘이 움직이는 게이지 속도계로 표시하려고합니다. 나는 기초가 좋다. 나는 또한 이미지를 소지자에게로드 할 수 있지만 나중에 이미지를 소지자에게로드 할 수 있습니다. 지금 나는 그것이Mac app 용 코코아/석영 2d 속도계에서 바늘을 흔드는 예제 코드가 필요합니다.

- (void)drawRect:(NSRect)rect 
{ 


    NSRect myRect = NSMakeRect (21, 21, 323, 325); // set the Graphics class square size to match the guage image 
    [[NSColor blueColor] set]; // colour it in in blue - just because you can... 
    NSRectFill (myRect); 



    [[NSGraphicsContext currentContext]      // set up the graphics context 
    setImageInterpolation: NSImageInterpolationHigh];  // highres image 

    //------------------------------------------- 

    NSSize viewSize = [self bounds].size; 
    NSSize imageSize = { 320, 322 };      // the actual image rectangle size. You can scale the image here if you like. x and y remember 

    NSPoint viewCenter; 
    viewCenter.x = viewSize.width * 0.50;     // set the view center, both x & y 
    viewCenter.y = viewSize.height * 0.50; 

    NSPoint imageOrigin = viewCenter; 
    imageOrigin.x -= imageSize.width * 0.50;    // set the origin of the first point 
    imageOrigin.y -= imageSize.height * 0.50; 

    NSRect destRect; 
    destRect.origin = imageOrigin;       // set the image origin 
    destRect.size = imageSize;        // and size 

    NSString * file = @"/Users/robert/Documents/XCode Projects/xWeather Graphics/Gauge_mph_320x322.png"; // stuff in the image 
    NSImage * image = [[NSImage alloc] initWithContentsOfFile:file]; 

    //------------------------------------------- 

    NSSize view2Size = [self bounds].size; 
    NSSize image2Size = { 149, 17 };       // the orange needle 
    NSPoint view2Center; 
    view2Center.x = view2Size.width * 0.50;     // set the view center, both x & y 
    view2Center.y = view2Size.height * 0.50; 

    NSPoint image2Origin = view2Center; 
    //image2Origin.x -= image2Size.width * 0.50;    // set the origin of the first point 
    image2Origin.x = 47; 
    image2Origin.y -= image2Size.height * 0.50; 

    NSRect dest2Rect; 
    dest2Rect.origin = image2Origin;       // set the image origin 
    dest2Rect.size = image2Size;        // and size now is needle size 


    NSString * file2 = @"/Users/robert/Documents/XCode Projects/xWeather Graphics/orange-needle01.png"; 
    NSImage * image2 = [[NSImage alloc] initWithContentsOfFile:file2]; 


                  // do image 1 
    [image setFlipped:YES];         // flip it because everything else is in this exerecise 
                  // do image 2 
    [image2 setFlipped:YES];        // flip it because everything else is in this exerecise 


    [image drawInRect: destRect 
      fromRect: NSZeroRect 
      operation: NSCompositeSourceOver 
      fraction: 1.0]; 


    [image2 drawInRect: dest2Rect 
      fromRect: NSZeroRect 
      operation: NSCompositeSourceOver 
      fraction: 1.0]; 





    NSBezierPath * path = [NSBezierPath bezierPathWithRect:destRect]; // draw a red border around the whole thing 
    [path setLineWidth:3]; 
    [[NSColor redColor] set]; 
    [path stroke]; 


} 

// ocords 플립 ... 작업을 취득 할 - (BOOL) isFlipped는 {YES 반환; }

@end

결과 here이다. 그것은 게이지 부분입니다. 이제는 입력에 따라 바늘을 움직여야합니다.

답변

0

Apple은 정확히 묻는대로 수행하는 SpeedometerView이라는 샘플 코드를 가지고 있습니다. 그것은 확실히 당신의 사용을 위해 그것을 적응하기 위해 몇 가지 조치를 취할 것이지만, 그것은 괜찮은 출발점 일 것입니다.

+0

감사합니다. 예, 알았습니다. 애플 코드는 매우 고밀도이지만 맥에서 작동하도록 만들었다. 프로젝트는 끝까지 길다.하지만 효과가있다. –