Cocoa China 苹果开发中文站

苹果Mac OS X开发 iPhone开发 Cocoa以及Cocoa Touch

推荐使用Safari浏览器阅读本站

图形图像

使NSImage支持在图片上添加倒影效果

Mac上一直比较流行的图片设计思路是在一个图片上面增加一个倒影,使其看起来的感觉像是放在一个透明的桌子上。最流行的就是iTunes中的CoverFlow。这个思路后来也被众多的Web 2.0公司的Logo设计者们普遍使用。

NSImage Reflection这段小代码是NSImage的category,专门用来在图片上添加倒影。你可以直接用它在图片上添加倒影效果。

代码可以在这里下载,用法也非常简单:

因为这个代码扩展了NSImage,所以要在某个NSImage图片上添加倒影,只需要使用[NSImage reflectedImage: amountReflected:]方法就可以了。很容易看明白,reflectedImage参数直接带上一个NSImage图片,amountReflected参数则是倒影的深度,用浮点数表示。

另外,代码使用了CTGradient类,如果你只想在Leopard中使用,也可以改改代码,直接使用NSGradient就可以了。

在Dock图标上画进度条

如果你用过Toast这个刻录软件,你会发现在刻录的时候,Dock图标上会有一个进度条,表示刻录的进度。如果你在用XCode,编译的时候图标上也会有一个进度条表示编译的进度。

其实在Dock图标上画进度条是很简单的事情,你只需要做如下工作即可:

点击这里阅读全文 »

Cocoa矢量图程序开发包

GCDrawKit是一款非常强大的矢量图程序开发包,有了它的帮助,你可以轻松用Cocoa开发出类似Illustrator或者Freehand这种矢量工具,当然,处理简单的图形工作也不在话下。

点击这里阅读全文 »

在XCode中使用OpenCV图形库

OpenCV是Intel®开源计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。可能OpenCV最常用的地方还是它的人脸识别功能,通过调用极少的函数就可以实现人脸的检测和识别。

在XCode中同样也可以使用这个图形库,最简单的方法是在这里下载编译好了的Framework,就可以直接使用了。dmg镜像中还包含了一个人脸识别的例子程序,可以直接通过你电脑的摄像头将你的脸动态地识别出来。当然如果希望更加深入地使用,你就需要了解一些关于模式识别方面的知识了。

如果想更多了解OpenCV的方方面面,可以访问OpenCV中文网站

 

在第一篇我们弄好了一个 OpenGL ES 框架, 接下来我们可以再进一步为写游戏作准备了, 这时, 我们有一个问题要好好考虑一下: 到底我们想以 Obj-C 开发还是以 C/C++ 开发呢?

个人来说, 我还是比较偏向 C/C++, 一来比较熟, 二来要是借用别人游戏方面的代码, 也比较容易找到! 所以在本篇, 我会和大家介绍一下怎么混合 C/C++ 和 Obj-C, 并编写一个 C++ 的 sprite class, 方便以后在游戏里应用!

点击这里阅读全文 »

如何制作Core Image滤镜插件

Core Image提供了很多滤镜,这里介绍自己开发Core Image滤镜的方法,相信会对一些朋友有用。

 

本文通过一个例子从头至尾介绍了如何开发一个将彩色图片转换为灰度图片的滤镜,并介绍了滤镜的使用方法。

点击这里阅读全文 »

格式转换:如何将CGPDFPageRef转换为CGImageRef

以下Carbon代码可以将PDF页面CGPDFPageRef转换为Quartz的CGImageRef格式,这样就可以将PDF页面用在Core Animation中了。

点击这里阅读全文 »

介绍一下如何设置CGColor颜色值

再明确一下,本站的文章基本不是翻译的就是自己人写的(younker兄现在有四篇,还转了superzhou兄一篇,dr_watson大大那篇待转中),转载的文章屈指可数。翻译的和转载的文章上面都标注来源了,本站不转载别人翻译成中文的文章(虽然本人翻译水平比较烂)。所以如果你想转载本站的文章,不管是本站翻译的还是本站独有的内容,拜托写一下转载自Cocoachina好吗,囧rz……(小弟一不是高手二不靠写程序吃饭,建个Cocoa站主要就是为了给大家带点新鲜玩意,囧)

另外发现有朋友说本站更新好勤,哈哈。小弟在此拜托各位大侠给点动力记得天天来哈,能给做个链接更好,让更多的人看到就更开心了。:D

之前发了一篇关于如何在iPhone中使用渐变的文章,忽然想起来本站并没有相关介绍颜色的文章。这里简单介绍一下如何取CGColor的颜色值,最好你对色彩的构成有一点基础,如果会用Photoshop就更好了,因为本文内容中会掺杂有一点Photoshop的知识。这篇文章的内容同时支持Mac与iPhone。

点击这里阅读全文 »

在iPhone中实现渐变效果

在本站之前的文章:《Leopard轻松编程-帮你节省代码》中介绍过,Leopard增加了一个新的NSGradient类,可以用于实现渐变效果。但是很不幸,iPhone SDK中并没有提供这个NSGradient类。那么如何在iPhone中实现渐变呢?本文将帮你解决这个问题。

点击这里阅读全文 »

Cocoachina教学:Core Animation入门

今天,Cocoachina会开始一个Core Animation的入门教学,和大家共同学习Core Animation的使用。本站介绍过不少Core Animation的文章,这篇文章是一个入门教学,从头帮助你了解Core Animation以及如何入门。

Core Animation是苹果在Leopard中加入的新API,主要用于利用显卡硬件制作动态的用户界面。同时,在iPhone SDK中也支持这种API。在Leopard和iPhone中,你会看到苹果大量使用这种很酷的效果,比如iTunes/iPhone的CoverFlow效果:

 

Core Animation的好处

Core Animation的最大好处是可以帮助Mac或者iPhone的开发者减少代码量。因为如果你想用Core Image或者Open GL实现界面的动画特效,其实也是可以的,主要是非常麻烦。而用Core Animation可以极大简化开发难度和减少代码量。

点击这里阅读全文 »

在我们使用Core Animation的过程中,可能会遇到一个问题,就是我们可以用简单的代码使一个view进行动画的移动,但是如何在view移动的过程中获取它的位置呢?下文将帮你解答这个问题。

点击这里阅读全文 »

Core Animation教学:关键桢动画

Leopard中最新的Core Animation技术可以让开发者简单地开发超酷的用户界面。想想iPhone为什么这么受欢迎,因为它革命性的用户界面和用户体验,可以让人爱不释手。在本站之前的文章里,我们介绍过一些关于Core Animation开发方面的文章,但是从来没有介绍过关于关键桢动画方面的内容。

本文通过一个例子讲解Core Animation关键桢动画方面的基本知识,例子很清晰易懂。建议您有一定Cocoa知识以及掌握初步的Core Animation概念,那么通过本文您会了解更多关于Core Animation的知识。

点击这里阅读全文 »

 

iTunes提供了新的CoverFlow效果,其中自带了一个动画形式的滚动条,完全不同于以往苹果的滚动条形式。你也可以在Leopard的Finder里找到这种动画形式的滚动条。

本文介绍如何创建这种滚动条,以便你可以在自己建立的CALayer中方便地添加。这篇文章的例子还可以做为很好的Core Animation教学供你参考。

点击这里阅读全文 »

Core Animation教学:如何使用CALayer的遮罩(mask)

在Core Animation的层中使用遮罩使图片的某些部分变为透明是非常简单的事情,你只需要建立一个遮罩层,设置为另一个层的mask即可。相关信息在本站的 Core Animation:用最少代码画出照片倒影效果 中有所提及。只是之前例子中的遮罩是使用Photoshop进行创建的。

本文通过一个简单例子,直接创建一个CGImageRef图片做为遮罩,继续讲解如何在Core Animation中使用遮罩。

点击这里阅读全文 »

如何用Cocoa通过CGrafPtr画图

苹果的一些插件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);

}

 

 

最新评论

最新讨论