2008年 8月2日

Mac上一直比较流行的图片设计思路是在一个图片上面增加一个倒影,使其看起来的感觉像是放在一个透明的桌子上。最流行的就是iTunes中的CoverFlow。这个思路后来也被众多的Web 2.0公司的Logo设计者们普遍使用。
NSImage Reflection这段小代码是NSImage的category,专门用来在图片上添加倒影。你可以直接用它在图片上添加倒影效果。
代码可以在这里下载,用法也非常简单:
因为这个代码扩展了NSImage,所以要在某个NSImage图片上添加倒影,只需要使用[NSImage reflectedImage: amountReflected:]方法就可以了。很容易看明白,reflectedImage参数直接带上一个NSImage图片,amountReflected参数则是倒影的深度,用浮点数表示。
另外,代码使用了CTGradient类,如果你只想在Leopard中使用,也可以改改代码,直接使用NSGradient就可以了。
2008年 4月8日
iTunes提供了新的CoverFlow效果,其中自带了一个动画形式的滚动条,完全不同于以往苹果的滚动条形式。你也可以在Leopard的Finder里找到这种动画形式的滚动条。
本文介绍如何创建这种滚动条,以便你可以在自己建立的CALayer中方便地添加。这篇文章的例子还可以做为很好的Core Animation教学供你参考。
2008年 4月8日
在Core Animation的层中使用遮罩使图片的某些部分变为透明是非常简单的事情,你只需要建立一个遮罩层,设置为另一个层的mask即可。相关信息在本站的 Core Animation:用最少代码画出照片倒影效果 中有所提及。只是之前例子中的遮罩是使用Photoshop进行创建的。
本文通过一个简单例子,直接创建一个CGImageRef图片做为遮罩,继续讲解如何在Core Animation中使用遮罩。
2008年 4月7日
苹果的一些插件API,如Webkit插件、iTunes可视化插件(SDK)等,提供的图形上下文指针都是CGrafPtr这种类型。那么如果想用Cocoa在其中画图,可以参考如下代码:
//destPort 为 CGrafPtr
CGContextRef cgContext;
OSStatus err = QDBeginCGContext(destPort, &cgContext);
if(err == noErr)
{
[NSGraphicsContext saveGraphicsState];
[NSGraphicsContext setCurrentContext: [NSGraphicsContext
graphicsContextWithGraphicsPort: cgContext flipped: NO];
/* 在这里就可以画了 */
[NSGraphicsContext restoreGraphicsState];
QDEndCGContext(destPort, &cgContext);
}
2008年 4月1日
今天介绍一些比较有用的源代码,你既可以把它们做为例子学习,也可以直接在你的项目里使用。
这些例子包括一个Core Animation文档中提及的动画菜单,一个高级点的Core Animation例子,一个Http服务器的例子以及一个如何设置“偏好设置”窗口的例子。希望对大家有用。
2008年 3月31日
在Quartz Composer完全入门第一部分中,我们讲解了如何导入图片,如何使用Billboard、LFO以及简单的例子系统。第二部分将继续通过青蛙的例子深入讲解Quartz Composer,并给出几个有趣的粒子系统的使用实例。

2008年 3月29日
某些情况下,NSImage加载的JPG文件的尺寸会显示的很奇怪,这主要是图形与NSImage分辨率不同的问题造成的。要解决这个问题,把NSImage的size设置为点阵的尺寸即可。
以下这段代码可以解决这个问题:
NSImageRep* rep = [image bestRepresentationForDevice:nil];
NSSize imgSize = NSMakeSize([rep pixelsWide],[rep pixelsHigh]);
[image setSize:imgSize];
2008年 3月25日
实现方法:
2008年 3月25日
以下是将图片保存为PNG的代码。也可以保存为TIFF, BMP, GIF, JPEG格式。
2008年 3月25日
有时候如果你从文件中读取一幅图像放入NSImage中,在放大时可能得不到相应的平滑效果。以下代码可以帮你解决:
2008年 3月25日
如果你希望将某一段文本转化为NSBezierPath路径,然后进行放大或者用特殊方式进行描绘,如何实现呢?下面是方法。
2008年 3月25日
让我们来写一个抓屏程序吧。当然,你知道只要按command+shift+3就可以抓取当前屏幕对吧?本文介绍如何用cocoa程序来实现这一功能。
2008年 3月25日
2008年 3月25日
下面是实现代码:
2008年 3月25日
实现代码如下:
NSRect selectionRect = …;
NSValue *value;
value = [NSValue valueWithRect: selectionRect];