在Dock图标上画进度条
2012-06-15 14:30
78 查看
如果你用过Toast这个刻录软件,你会发现在刻录的时候,Dock图标上会有一个进度条,表示刻录的进度。如果你在用XCode,编译的时候图标上也会有一个进度条表示编译的进度。
其实在Dock图标上画进度条是很简单的事情,你只需要做如下工作即可:
要在Dock上显示图标,最简单的方法是使用NSApp的setApplicationIconImage:方法。我们只要创建一个NSImage,将应用程序的图标贴上,再在上面画上一个进度条,接着使用NSApp setApplicationIconImage:方法。
在需要更新进度的时候,重新画出相应长度的进度条,再重新设置一下应用程序的图标,就可以了。
大致的代码如下:
-(void) updateDockTile
{
NSImage* dockIcon = [[[NSImage alloc] initWithSize: NSMakeSize(128,128)] autorelease];
[dockIcon lockFocus];
NSRect box = { {4, 4}, {120, 16} };
// App icon:
[[NSImage imageNamed: @"NSApplicationIcon"] dissolveToPoint: NSZeroPoint fraction: 1.0];
// Track & Outline:
[[NSColor whiteColor] set];
[NSBezierPath fillRect: box];
[[NSColor blackColor] set];
[NSBezierPath strokeRect: box];
// State fill:
box = NSInsetRect( box, 1, 1 );
[[NSColor knobColor] set];
box.size.width = (box.size.width / (max -min)) * (current -min);
NSImage* prImg = [NSImage imageNamed: @"MiniProgressGradient"];
NSRect picBox = { { 0,0 }, { 0,0 } };
if( prImg )
{
picBox.size = [prImg size];
[prImg drawInRect: box fromRect: picBox operation: NSCompositeCopy fraction: 1.0];
}
else
NSRectFill( box );
[dockIcon unlockFocus];
[NSApp setApplicationIconImage: dockIcon];
}
你可以在这里下载例子。源码作者是Uli
Kusterer。
其实在Dock图标上画进度条是很简单的事情,你只需要做如下工作即可:
要在Dock上显示图标,最简单的方法是使用NSApp的setApplicationIconImage:方法。我们只要创建一个NSImage,将应用程序的图标贴上,再在上面画上一个进度条,接着使用NSApp setApplicationIconImage:方法。
在需要更新进度的时候,重新画出相应长度的进度条,再重新设置一下应用程序的图标,就可以了。
大致的代码如下:
-(void) updateDockTile
{
NSImage* dockIcon = [[[NSImage alloc] initWithSize: NSMakeSize(128,128)] autorelease];
[dockIcon lockFocus];
NSRect box = { {4, 4}, {120, 16} };
// App icon:
[[NSImage imageNamed: @"NSApplicationIcon"] dissolveToPoint: NSZeroPoint fraction: 1.0];
// Track & Outline:
[[NSColor whiteColor] set];
[NSBezierPath fillRect: box];
[[NSColor blackColor] set];
[NSBezierPath strokeRect: box];
// State fill:
box = NSInsetRect( box, 1, 1 );
[[NSColor knobColor] set];
box.size.width = (box.size.width / (max -min)) * (current -min);
NSImage* prImg = [NSImage imageNamed: @"MiniProgressGradient"];
NSRect picBox = { { 0,0 }, { 0,0 } };
if( prImg )
{
picBox.size = [prImg size];
[prImg drawInRect: box fromRect: picBox operation: NSCompositeCopy fraction: 1.0];
}
else
NSRectFill( box );
[dockIcon unlockFocus];
[NSApp setApplicationIconImage: dockIcon];
}
你可以在这里下载例子。源码作者是Uli
Kusterer。
相关文章推荐
- 类似chrome在dock图标上添加任务进度圆饼
- Swift语言 OS X程序点击dock图标重新弹出窗口方法
- Delphi之Windows Taskbar API 编程,包括任务栏进度条,图标覆盖,任务栏缩略图,跳转列表
- 06 ubuntu 12.04lts中无法修改dock图标大小
- Apple Mac OS X每日一技巧020:更换程序、文档、Dock、文件夹图标
- 程序关闭后,点击dock图标恢复窗口
- 小程序学习02->icon图标与progress进度条
- OSX: 私人定制Dock默认程序图标
- cocos creator 无法打开项目 dock栏只显示图标问题解决方法
- 技巧-MAC下隐藏Dock栏正在运行中的软件图标
- osx 隐藏应用的菜单栏和dock图标
- OS X程序点击dock图标重新弹出窗口方法
- SeekBar进度条背景图片和按钮图标的动态切换
- Qt 5.0 for mac 添加程序可执行文件图标 和 dock窗口显示图标
- Mac 点击dock图标显示窗口,点击关闭按钮隐藏窗口
- Android实现下载进度条图标效果
- mac os 配置 dock 栏图标显示/隐藏
- OSX脚本:禁止系统自动添加AppStore图标到用户Dock上
- MAC 如何隐藏dock栏上你不想看见的图标
- Linux - 麒麟17.04 删除桌面图标(计算机,主文件夹,回收站)与 Cairo-Dock 安装配置