Cocoa学习之路 Slider调色实例

Cocoa学习之路 Slider调色实例是本文要介绍的内容,部所属,直接进入话题。这个开发实例是同过鼠标拖动滑条,调整三原色数值,从而改变最终合成的颜色。新人可借此练习 NSTextField,NSSlider,NSColor,NSObject 的使用。

Cocoa学习之路 Slider调色实例

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 

源码下载

相关推荐