[問題] MFC double buffer & bitmap

看板C_and_CPP (C/C++)作者 (⊙_⊙)時間14年前 (2011/09/12 20:42), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串1/1
開發平台(Platform): MFC 最近在試用double buffer避掉畫面閃爍的問題 查到的方式大多是用下面這樣: CDC memDC; CRect aRect; CBitmap memBitmap; GetWindowRect(&aRect); MemDC.CreateCompatibleDC(NULL);//當buffer用 MemBitmap.CreateCompatibleBitmap(pDC, rc.Width(), rc.Height()); CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap); MemDC.FillSolidRect(0, 0, rc.Width(), rc.Height(), RGB(255,255,255)); 在最後一行,是先把buffer塗滿白色當背景顏色,然後再用memDC畫圖 我試過把最後一行拿掉,背景就被塗成預設的黑色了(預設黑色應該沒錯吧?) 我想問的是,有沒有辦法把他的背景顏色設定成透明的? 也就是memDC沒畫到的地方不會被背景色蓋掉的方法? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.126.9.141 ※ 編輯: out99 來自: 59.126.9.141 (09/12 20:44)

09/12 20:48, , 1F
所謂的透明也就只是假象,其實是把下一層,被你覆蓋的視窗
09/12 20:48, 1F

09/12 20:49, , 2F
畫的東西當成你 MemDC 背景而已
09/12 20:49, 2F
那像是按鈕那些只能用其他方法避開了? ※ 編輯: out99 來自: 59.126.9.141 (09/12 22:08)

09/12 23:05, , 3F
你到底想幹嘛
09/12 23:05, 3F

09/15 00:01, , 4F
因為我用這種方式更新畫面按鈕會被蓋掉
09/15 00:01, 4F

09/17 11:26, , 5F
RGB並沒有提供alpha值阿 透明要靠別的方式達成
09/17 11:26, 5F

09/17 11:27, , 6F
聽起來有種小畫家的fu...按鈕放到另依個HWND就可以規避了吧
09/17 11:27, 6F
文章代碼(AID): #1ERVuhPx (C_and_CPP)
文章代碼(AID): #1ERVuhPx (C_and_CPP)