SDL_SetPalette

章節:SDL API 參考 (3)
更新:2001年9月11日 星期二 23:01
索引
 

名稱

SDL_SetPalette - 設置8位平面的調色板中的顏色。  

摘要

#include "SDL.h"

int SDL_SetPalette(SDL_Surface *surface, int flags, SDL_Color *colors, int firstcolor, int ncolors);  

描述

為給定的8位平面設置一份調色板。

含有SDL_HWPALETTE標記的調色板化(8位)屏幕平面有兩種調色板,一種是用于映射圖塊傳送至平面或從平面傳送圖塊出去的邏輯調色板,另一種是物理調色板(決定硬件如何將顏色映射至顯示)。當傳送平面時(若平面必須轉換像素格式),SDL_BlitSurface總是使用邏輯調色板。因此,僅僅修改其中一個調色板來達到各種特定顏色效果(例如:屏幕逐漸消失、顏色閃爍、屏幕逐漸變暗)是有益的。

此函數可通過將flags參數指定為SDL_LOGPAL或SDL_PHYSPAL來修改邏輯調色板或物理調色板。

當surface為當前顯示平面時,將以所請求的顏色來更新顯示顏色分配表。若已在SDL_SetVideoMode的標記中設置了SDL_HWPALETTE,則SDL_SetPalette總是返回1,並且即使窗口的顏色分配表必須被扭曲或者以仿真的方式運行,調色板也一定會設置成你之所求。

SDL_Color結構體的顏色分量的大小為8位,總共可提供256^3=16777216種顏色。  

返回值

若surface並不是一個調色板化的平面,則此函數什麼也不做,並返回0。若所有顏色都已傳送給SDL_SetPalette設置好,則會返回1。 若非所有的顏色都正確地按要求設定,則會返回0,並且你應該通過查看平面調色板來確定實際的調色板。  

例子

        /* 以灰色調色板創建顯示平面 */
        SDL_Surface *screen;
        SDL_Color colors[256];
        int i;
        .
        .
        .
        /* 以顏色信息來填充顏色 */
        for(i=0;i<256;i++){
          colors[i].r=i;
          colors[i].g=i;
          colors[i].b=i;
        }

        /* 創建顯示平面 */
        screen=SDL_SetVideoMode(640, 480, 8, SDL_HWPALETTE);
        if(!screen){
          printf("不能設置該視頻模式:%s", SDL_GetError());
          exit(-1);
        }

        /* 設置調色板 */
        SDL_SetPalette(screen, SDL_LOGPAL|SDL_PHYSPAL, colors, 0, 256);
        .
        .
        .
        .

 

另見

SDL_SetColors、SDL_SetVideoMode、SDL_Surface、SDL_Color  

譯者補充

參數解析

surface
所要設置的顏色分配表所在的平面。
flags
調色板標記,其值可取以下值按位或的組合:
SDL_LOGPAL
設置邏輯調色板。
SDL_PHYSPAL
設置物理調色板。
colors
指向顏色分配表的指針。
firstcolor
顏色分配表的第一種顏色。
ncolors
顏色分配表的顏色總量。

 

譯者

石仔<guoshimin57@gmail.com>  

中文版主頁

http://guoshimin.users.sf.net  

中文版最後更新時間

2010年2月20日


 

索引

名稱
摘要
描述
返回值
例子
另見
譯者補充
譯者
中文版主頁
中文版最後更新時間