mnbvcxz 2011-07-20
Cocoa学习之路 Slider调色实例是本文要介绍的内容,部所属,直接进入话题。这个开发实例是同过鼠标拖动滑条,调整三原色数值,从而改变最终合成的颜色。新人可借此练习 NSTextField,NSSlider,NSColor,NSObject 的使用。
1、新建一个Cocoa项目SliderColor
需要拖一个Text Field控件,和四个Horizontal Slider控件到窗口。这里用Text Field来显示颜色,Horizontal Slider分别为alpha,red,green,blue。Text Field属性设置为只读(Enabled),背景(Background)为黑色,Horizontal Slider最小值(Minimum)都设为0,最大值(Miximum)为1,并勾选Continuous(这个是为了拖动时就改变值),alpha当前值(Current)为1,其他的当前值都为0,
2、创建Controller(NSObject)
拖一个NSObject命名为ColorController,创建Outlets为:
alphaSlider blueSlider colorField greenSlider redSlider 创建Actions为: setAlpha setBlue setGreen setRed
把创建的Outlets和Actions和窗口中的控件进行相应的绑定(关联)后保存ColorController到项目中。
3.、在ColorController中写代码
需要在ColorController.h中添加float类型的变量来存储Slider的值和一个void类型的updateColor方法来更新颜色。最终代码如下:
#import <Cocoa/Cocoa.h> @interface ColorController : NSObject { IBOutlet NSSlider *alphaSlider; IBOutlet NSSlider *blueSlider; IBOutlet NSTextField *colorField; IBOutlet NSSlider *greenSlider; IBOutlet NSSlider *redSlider; float redValue; float blueValue; float greenValue; float alphaValue; } - (IBAction)setAlpha:(id)sender; - (IBAction)setBlue:(id)sender; - (IBAction)setGreen:(id)sender; - (IBAction)setRed:(id)sender; - (void)updateColor; @end
在ColorController.m中添加updateColor方法来进行RGB颜色的转换和Text Field的背景颜色设置,在拖动调用updateColor。完整代码如下:
#import "ColorController.h" @implementation ColorController - (IBAction)setAlpha:(id)sender { [self updateColor]; //调用updateColor方法 } - (IBAction)setBlue:(id)sender { [self updateColor]; } - (IBAction)setGreen:(id)sender { [self updateColor]; } - (IBAction)setRed:(id)sender { [self updateColor]; } - (void)updateColor { //获取RGB和Alpha值并赋值给变量 redValue = [转自redSlider floatValue]; greenValue = [greenSlider floatValue]; blueValue = [blueSlider floatValue]; alphaValue = [alphaSlider floatValue]; //根据获取的RGB和Alpha值创建颜色(NSColor) NSColor *uColor = [NSColor colorWithCalibratedRed:redValue green:greenValue blue:blueValue alpha:alphaValue]; //设置TextField(colorField)背景颜色 [colorField setBackgroundColor:uColor]; } @end