第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

putimage是可以的,但是有黑色邊框,這怎么整?

putimage是可以的,但是有黑色邊框,這怎么整?

C
慕斯王 2023-04-24 21:17:57
void drawImg(int x, int y, IMAGE* src){// 變量初始化DWORD* pwin = GetImageBuffer(); //窗口緩沖區(qū)指針DWORD* psrc = GetImageBuffer(src); //圖片緩沖區(qū)指針int win_w = getwidth(); //窗口寬高int win_h = getheight();int src_w = src->getwidth(); //圖片寬高int src_h = src->getheight();// 計(jì)算貼圖的實(shí)際長(zhǎng)寬int real_w = (x + src_w > win_w) ? win_w - x : src_w; // 處理超出右邊界int real_h = (y + src_h > win_h) ? win_h - y : src_h; // 處理超出下邊界if (x < 0) { psrc += -x; real_w -= -x; x = 0; } // 處理超出左邊界if (y < 0) { psrc += (src_w * -y); real_h -= -y; y = 0; } // 處理超出上邊界// 修正貼圖起始位置pwin += (win_w * y + x);// 實(shí)現(xiàn)透明貼圖for (int iy = 0; iy < real_h; iy++){for (int ix = 0; ix < real_w; ix++){byte a = (byte)(psrc[ix] >> 24);//計(jì)算透明通道的值[0,256) 0為完全透明 255為完全不透明if (a > 100){pwin[ix] = psrc[ix];}}//換到下一行pwin += win_w;psrc += src_w;}}rotateimage(car_r + 1, cars + 2, -0.54, false, true);drawImg(player.x, player.y, car_r + 1);putimage(player.x, player.y, car_r + 1);drawImg()是用于去除圖片黑色邊框的函數(shù),為什么用了rotateimage()旋轉(zhuǎn)圖片角度之后,drawImg就打印不出來(lái)圖片了?
查看完整描述

1 回答

?
精慕HU

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊

根據(jù)代碼,可以看出 rotateimage() 函數(shù)調(diào)用后,car_r + 1 圖片的指針已經(jīng)被修改,如果直接傳入 drawImg() 函數(shù)中,可能會(huì)導(dǎo)致指針的位置出錯(cuò),因此導(dǎo)致無(wú)法正確打印圖片。而 putimage() 函數(shù)是直接將圖像輸出到屏幕上,不需要傳入指針,因此不會(huì)受到指針位置的影響。
解決這個(gè)問(wèn)題可以有以下兩種方法:
1.重新將旋轉(zhuǎn)后的圖片指針賦值給一個(gè)新的指針變量,然后將這個(gè)新的指針變量作為參數(shù)傳遞給 drawImg() 函數(shù)。例如:
IMAGE* rotated_cars = new IMAGE;
rotateimage(rotated_cars, cars + 2, -0.54, false, true);
drawImg(player.x, player.y, rotated_cars);
2.在 drawImg() 函數(shù)內(nèi)部,先將原始的圖片指針保存下來(lái),然后再對(duì)指針進(jìn)行操作。例如:
void drawImg(int x, int y, IMAGE* src)
{
// 變量初始化
DWORD* pwin = GetImageBuffer(); //窗口緩沖區(qū)指針
DWORD* psrc = GetImageBuffer(src); //圖片緩沖區(qū)指針
DWORD* psrc_original = psrc; // 保存原始的圖片指針
// ...

// 實(shí)現(xiàn)透明貼圖
for (int iy = 0; iy < real_h; iy++)
{
for (int ix = 0; ix < real_w; ix++)
{
byte a = (byte)(psrc[ix] >> 24);
if (a > 100)
{
pwin[ix] = psrc[ix];
}
}
// 換到下一行
pwin += win_w;
psrc += src_w;
}

// 恢復(fù)原始的圖片指針
psrc = psrc_original;
}


查看完整回答
反對(duì) 回復(fù) 2023-04-27
  • 1 回答
  • 0 關(guān)注
  • 432 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)