当前位置:  开发笔记 > 编程语言 > 正文

从NSProgressIndicator获取NSImage

如何解决《从NSProgressIndicator获取NSImage》经验,为你挑选了1个好方法。

我需要将NSProgressIndicator中的图像放入NSOutlineView Cell中.我已经编写了代码,为确定的指标执行此操作,它的工作效果非常好:

NSProgressIndicator *progressIndicator = [[NSProgressIndicator alloc] initWithFrame:NSMakeRect(0, 0, 16, 16)];
[progressIndicator setStyle:NSProgressIndicatorSpinningStyle];          
[progressIndicator setIndeterminate:NO];
[progressIndicator setMaxValue:100.0];
[progressIndicator setDoubleValue:somePercentage];          

NSImage *updateImage = [[NSImage alloc] initWithData:[progressIndicator dataWithPDFInsideRect:[progressIndicator frame]]];
[progressIndicator release];


return [updateImage autorelease];

我试图修改代码也给我不确定的指标图像.然而,对于不确定的情况,我总是得到一个空白的16x16图像.(我已经通过在每种情况下将图像写入文件来确认这一点,确定的情况给出了进度指示器图像,不确定的情况总是16x16白色方块).

修改后的代码是:

if(self.lengthUnknown)
{
    NSProgressIndicator *progressIndicator = [[NSProgressIndicator alloc] initWithFrame:NSMakeRect(0, 0, 16, 16)];
    [progressIndicator setStyle:NSProgressIndicatorSpinningStyle];          
    [progressIndicator setIndeterminate:YES];

    NSImage *updateImage = [[NSImage alloc] initWithData:[progressIndicator dataWithPDFInsideRect:[progressIndicator frame]]];
    [progressIndicator release];


    return [updateImage autorelease];
}
else
{
 // Same code as the first listing, this case works fine
}

不确定的进度指标是否使用某种类型的绘图导致-dataWithPDFInsideRect:无法捕获其图像?


更多信息:我尝试将进度指示器设置为不使用线程动画以及尝试通过NSImage的lockFocus方法获取内容,如下所示,但这些尝试都没有产生任何影响.

Dave在下面提到的进度指示器单元代码(AMIndeterminateProgressIndicatorCell)是一个很好的解决方法,但我仍然想知道为什么我不能使用与确定模式相同的技术.



1> Dave Dribin..:

我已经使用AMIndeterminateProgressIndicatorCell来获取单元格中不确定的进度指示器.这不是一个真正的NSProgressIndicator,因为它是自己的绘图,但它是一个非常好的复制品,IMO.

alt text http://www.harmless.de/images/progressindicator.png?harmless=e55652fb0a6b5e2d88a22e9b37c9bbc1

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有