[問題] MFC 貼透明 PNG 圖片問題

看板C_and_CPP (C/C++)作者 (Seoker)時間14年前 (2012/02/10 17:33), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 小弟是初學 MFC 的新手,最近有讀取 PNG 圖片的問題 因為案子很趕,google 很久也找不到好的解決方法 只好上來問大家該如何解決 (別問我為何用 MFC,這是要求 QQ) 假設我的 Dialog 叫 CMyDialog,繼承 CDialogEx 我先將我的 dialog 設成透明(用 CMyDialog::OnCtlColor() 方法,將筆刷設成透明) 接著從 resource 讀進一張有透明部分的 png 圖,存進 CImage 我在 CMyDialog::OnPaint() 方法中用 CImage::Draw() 去貼上畫布 code 如下: CImage *m_imgBackround; // 假設已 load 成功 CPaintDC dc(this); m_imgBackround->Draw(dc.m_hDC, 0, 0, width, height); // x, y 為已知長寬 正常情況下可以正常顯示出來,透明的部分真的是透明的,沒有問題 (所以讀圖片的部分應該是沒有問題) 可是有以下兩個問題: (1) 當我將背後的視窗移動過,我的 dialog 的透明部分仍是剛開始的背景,並沒有隨著更新 (2) 當我的視窗自己移動過(MoveWindow,bRepaint 是預設的 1), 新的透明的位置也沒有正常更新(仍是之前塗過的顏色) (就有點像油漆圖過就黑了,再也白不回來) 我想應該是哪裡沒注意到、或清空之類的,但不知道如何解決 請問版上的各位高手,這問題應該如何解決?在此先謝謝大家 :) 餵入的資料(Input): N/A 預期的正確結果(Expected Output): N/A 錯誤結果(Wrong Output): N/A 程式碼(Code):(請善用置底文網頁, 記得排版) N/A 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.63.100.2

02/10 20:34, , 1F
要從layerwindow下手 並不是單純的畫上透明
02/10 20:34, 1F

02/24 14:24, , 2F
我成功用layered window畫出透明的視窗了
02/24 14:24, 2F

02/24 14:25, , 3F
可是在上面的button都看不到了,查過是無法有child window
02/24 14:25, 3F

02/24 14:26, , 4F
不知道該如何解決比較好...請教各位大大QQ
02/24 14:26, 4F
文章代碼(AID): #1FDEHseV (C_and_CPP)
文章代碼(AID): #1FDEHseV (C_and_CPP)