我需要使用SDL_Rect調整已裁剪並傳送到屏幕的圖像的alpha(SDL_Surface *)。我有一個帶有3個圖像的圖像文件(.bmp),我使用SDL_Rect裁剪了每個圖像,但我需要分別調整每個圖像的Alpha。 可以這樣做嗎?使用C++&SDL更改使用SDL_Rect裁剪的圖像的alpha
失敗了,我可以將每個裁剪的SDL_Surface *存儲到一個新的SDL_Surface中,我可以將SDL_SetAlpha應用於每個SDL_SetAlpha? 我意識到我可以裁剪原始圖像並單獨導入它們,但在這種情況下它不是一個選項。
我希望一切都很有意義,我是一個小白菜在這裏問問題,所以如果我以任何方式違背了協議,請原諒我。
編輯:
這是我的;
SDL_Rect cropBoxPump1 = { 5, 103, 200, 200 };
SDL_Rect positionPump1 = { 30, 103, 0, 0 };
SDL_Surface* pumpkinConvertedTo32bit = NULL;
SDL_Surface *pumpkins = SDL_LoadBMP("pumpkins_faces.bmp");
pumpkinConvertedTo32bit = SDL_DisplayFormat(pumpkins);
SDL_BlitSurface(pumpkinConvertedTo32bit, &cropBoxPump1, screen, &positionPump1);
所以基於這樣其實我可以改變一個已經裁剪與SDL_Rect圖像的只是部分的阿爾法?而不是整個SDL_Surface?
鑑於你的表面沒有alpha通道,我建議將每個子部分放在單獨的表面中。如果它絕對需要停留在單一表面上,那麼您可以闖入表面的像素數據並編輯爲手動,我可以更新我的文章,它會告訴您如何去做,但將圖像分解爲單獨的表面更容易,更安全。 –
嗨,我剛剛編輯我的帖子,告訴你我有什麼。如果編輯裁剪的部分不是可能的,你可以告訴我如何將裁剪後的部分另存爲另一個Surface?我無法在任何地方找到一個例子。謝謝你的幫助 – Julz
哇,這看起來很重!好吧,我會給它一個去讓你知道結果。再次感謝你的幫助。 – Julz