2012-12-10 33 views
1

我正在添加功能到我的Mac OSX应用程序,以便在一系列变量传递值时显示类似于附加链接中的图形(Mac OSX显示硬盘驱动器上剩余可用空间)的图形。如何复制Mac OSX系统图形?

例如,如果我有5个变量,A至E具有以下值/百分数(A = 50,B = 20,C = 15,d = 10,E = 5),I想要学习如何以这种格式显示这些值,其中彩条的大小与该值成比例,并且还显示图例。

任何人都可以提供的示例代码将不胜感激。

回答

2

已解决:最后我决定学习如何使用石英做一些绘图。这是非常有益的,因为随着输入变量的变化,我已经达到了按比例缩放的条形图的预期结果,该条形图会改变大小。它也是非常可定制的。

对于想要了解如何做到这一点的任何人,我强烈推荐这个tutorial

0

有很多不同的方法来实现这一点。我将首先使用一个NSBox对象,并给它正确的形状。接下来,我将以编程方式创建一个显示不同颜色的图像,并用另一个图像遮罩以切出所有边缘。然后我会在框中创建一个NSImageView并在那里显示蒙面图像。如果你愿意,我可以添加一些代码。

编辑:

一些代码。

我已经尝试过使用由2种颜色和透明休息组成的简单静态图片。我只是把它添加到出口,像这样:

-(void) awakeFromNib{ 
    NSImage* img = [self maskImage:[NSImage imageNamed:@"Static image from Bundle"] withMask:[NSImage imageNamed:@"Static image mask"]]; 
    [imgView setImage:img]; 

}

而且maskImage:withMask:方法是这样的:

- (NSImage*) maskImage:(NSImage *)image withMask:(NSImage *)maskImage { 
    CGImageSourceRef sourceRef = CGImageSourceCreateWithData((__bridge CFDataRef)[maskImage TIFFRepresentation], NULL); 
    CGImageRef maskRef = CGImageSourceCreateImageAtIndex(sourceRef, 0, NULL); 

    sourceRef = CGImageSourceCreateWithData((__bridge CFDataRef)[image TIFFRepresentation], NULL); 
    CGImageRef imageRef = CGImageSourceCreateImageAtIndex(sourceRef, 0, NULL); 


    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), 
            CGImageGetHeight(maskRef), 
            CGImageGetBitsPerComponent(maskRef), 
            CGImageGetBitsPerPixel(maskRef), 
            CGImageGetBytesPerRow(maskRef), 
            CGImageGetDataProvider(maskRef), NULL, false); 

    CGImageRef masked = CGImageCreateWithMask(imageRef, mask); 
    return [[NSImage alloc] initWithCGImage:masked size:NSZeroSize]; 

}

对于屏蔽图像I使用了一个简单的黑白photoshop图片,大小为NSBox对象,并将所有应该变为透明的东西变黑。这种方法唯一的问题是NSBox的阴影不被渲染。为了达到这个目的,你需要在你的面具上创建一个渐变。这应该是非常简单的。

我一直在使用这些图片:http://postimage.org/gallery/ertbeca/

图片来源:http://postimage.org/image/pdgs4abop/ 面膜图像:http://postimage.org/image/54teikcdl/

而且它结束了看起来像这样:http://postimage.org/image/s8tvb5fop/

希望有所帮助。

+0

sigkill - 谢谢你的有用指导。我会在一起做一些事情,但是你也会赞赏任何代码示例。 –

相关问题