作者seoker (Seoker)
看板C_and_CPP
標題[問題] MFC 貼透明 PNG 圖片問題
時間Fri Feb 10 17:33:39 2012
開發平台(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