看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
TeaEEE:要從layerwindow下手 並不是單純的畫上透明 02/10 20:34
seoker:我成功用layered window畫出透明的視窗了 02/24 14:24
seoker:可是在上面的button都看不到了,查過是無法有child window 02/24 14:25
seoker:不知道該如何解決比較好...請教各位大大QQ 02/24 14:26