我正在使用LPDIRECT3DTEXTURE9來保存圖像。部分時間顯示透明色
這是用來顯示我的圖片的功能。
int drawcharacter(SPRITE& person, LPDIRECT3DTEXTURE9& image)
{
position.x = (float)person.x;
position.y = (float)person.y;
sprite_handler->Draw(
image,
&srcRect,
NULL,
&position,
D3DCOLOR_XRGB(255,255,255));
return 0;
}
按照書上我已經表明作爲最後一個參數的RGB顏色不會顯示在屏幕上,你這是怎麼創建的透明度。
這適用於大多數情況,但在我的圖像和圖片邊緣留下一條粉紅線。經過試驗和錯誤後,我發現如果我回到Photoshop中,我可以通過用粉紅色繪製粉色框來消除粉色框。這可以在左邊的船上看到。
我開始認爲photoshop是混合的圖像的邊緣,使背景不是所有相同的粉色陰影雖然我沒有證據。
任何人都可以通過編程來解決這個問題,或者是圖像中的錯誤嗎?
如果有人擅長photoshop,他們可以告訴我如何修復圖像,我主要使用png,但是如果需要,我願意改變。
編輯:質地創建代碼的要求
character_image = LoadTexture("character.bmp", D3DCOLOR_XRGB(255,0,255));
if (character_image == NULL)
return 0;
1)什麼是LoadTexture()函數? 2)我假設你真的使用'character.png',而不是'character.bmp',對吧? – vines 2011-06-16 14:29:49
@vines LoadTexture是直接x的一部分,我沒有做到,是的,我用bmp和png,一直在改變爲png來嘗試解決這個問題。 – Skeith 2011-06-16 14:32:08
BMP格式不支持Alpha通道。它不會工作。 PNG會,如果alpha通道實際上包含在文件中,它會起作用。用一些圖像查看器檢查它:你不應該看到彩色的背景矩形,只有前景可以自由地「浮動」。是的,如果LoadTexture真的是DirectX的一部分,請給出一個鏈接到它的文檔? – vines 2011-06-16 14:44:06