绘制渐变矩形的一种方法

- (void)drawRect:(CGRect)rect {
    // Drawing code
    [super drawRect:rect];
    
    //draw wings
    [[UIColor blackColor] set];
    CGFloat tempYPlace = self.currentSelectionY;
    if (tempYPlace < 0.0) {
        tempYPlace = 0.0;
    } else if (tempYPlace >= self.frame.size.height) {
        tempYPlace = self.frame.size.height - 1.0;
    }
    CGRect temp = CGRectMake(0.0, tempYPlace, self.frame.size.width, 1.0);
    UIRectFill(temp);
    
    //draw central bar over it
    CGFloat cbxbegin = self.frame.size.width * 0.2;
    CGFloat cbwidth = self.frame.size.width * 0.6;
    for (int y = 0; y < self.frame.size.height; y++) {
        [[UIColor colorWithHue:(y/self.frame.size.height) saturation:1.0 brightness:1.0 alpha:1.0] set];
        CGRect temp = CGRectMake(cbxbegin, y, cbwidth, 1.0);
        UIRectFill(temp);
    }
}

如图所示:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!如果你想用C语言写一个颜色渐变的程序,我可以给你一些思路和示例代码。 首先,你需要了解颜色的表示方式。在C语言中,颜色可以用RGB(红绿蓝)三原色的数值来表示。每种颜色的取值范围是0到255,因此可以用一个三元数组来表示一个颜色。例如,红色可以表示为{255, 0, 0},绿色可以表示为{0, 255, 0},蓝色可以表示为{0, 0, 255}。 其次,你需要了解如何在屏幕上绘制颜色。这可以使用C语言提供的图形库来实现。常见的图形库包括SDL、OpenGL、DirectX等,你可以选择一个你喜欢的库来学习。下面是一个使用SDL库绘制颜色渐变的示例代码: ```c #include <SDL.h> const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; int main(int argc, char* args[]) { SDL_Window* window = NULL; SDL_Surface* screenSurface = NULL; if(SDL_Init(SDL_INIT_VIDEO) < 0) { printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError()); return 0; } window = SDL_CreateWindow("Color Gradient", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if(window == NULL) { printf("Window could not be created! SDL_Error: %s\n", SDL_GetError()); return 0; } screenSurface = SDL_GetWindowSurface(window); SDL_Rect rect; rect.x = 0; rect.y = 0; rect.w = SCREEN_WIDTH / 2; rect.h = SCREEN_HEIGHT; Uint8 r = 0, g = 0, b = 0; Uint8 r_step = 1, g_step = 2, b_step = 3; while(true) { SDL_FillRect(screenSurface, &rect, SDL_MapRGB(screenSurface->format, r, g, b)); SDL_UpdateWindowSurface(window); r += r_step; g += g_step; b += b_step; if(r == 255 || r == 0) r_step = -r_step; if(g == 255 || g == 0) g_step = -g_step; if(b == 255 || b == 0) b_step = -b_step; SDL_Delay(10); } SDL_DestroyWindow(window); SDL_Quit(); return 0; } ``` 这个程序使用SDL库创建了一个640x480的窗口,并在窗口左侧绘制了一个颜色渐变矩形。程序不断更新矩形的颜色,让矩形的颜色渐变。你可以修改代码来实现你自己的颜色渐变效果。 希望这个回答能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值