廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 7754 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
f8806084
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x2
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
文章表情[C/C++] [問題]MFC--如何完整的將Bitmap貼至Dialog(已解決)
各位大大好,我有個問題想請教一下,我用VC建立一個dialog為主視窗的專案,今天有一張bitmap的圖,大小可能會換,所以要動態貼圖,程式碼如下:
::SetWindowPos(this->GetSafeHwnd(),   //指向dialog的handle
        HWND_TOP,
       ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



[ 此文章被f8806084在2005-09-13 12:18重新編輯 ]


獻花 x0 回到頂端 [樓 主] From:台灣數位聯合 | Posted:2005-09-12 09:33 |
Freelife
數位造型
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x2 鮮花 x60
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

貼圖的話,不是用"BitBlt"就可以了嗎?
要改變圖的大小,可以用"StretchBlt"


獻花 x0 回到頂端 [1 樓] From:台灣中華電信 | Posted:2005-09-12 10:28 |
f8806084
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x2
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

嗯嗯~^^我的確是用bitblt貼上去的,但在MFC做貼圖時若圖比你給定的視窗大時它會被截成跟視窗同大小,慘的是,圖我不能去縮小它,它給多大我就要把多大貼上去dialog,所以才要想辦法把dialog(扣掉標題列)設成跟bitmap同大小^^",謝謝你能跟我參與討論~ 表情


獻花 x0 回到頂端 [2 樓] From:台灣數位聯合 | Posted:2005-09-12 10:40 |
codeboy 手機
個人文章 個人相簿 個人日記 個人地圖
社區建設獎
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x6 鮮花 x331
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

不然先抓到目前dialog大小然後把他設定到比擬的圖還大的大小
然後重新繪至螢幕再把圖貼上~不知道行不行~ 表情



連結有問題請來信,我會盡快修正~^^
通報時請附上是"哪一篇失效"...這樣我才能去修正~麻煩各位好心人士了~

[連結失效通報][ 網頁.伺服.程式 討論區]
----------------------在世界中心呼喊愛情----------------------
深深思念一個人的時候,我們不知不覺的地活在世界的中心...
獻花 x0 回到頂端 [3 樓] From:台灣政府網際 | Posted:2005-09-12 11:28 |
Freelife
數位造型
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x2 鮮花 x60
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

"GetClientRect"可以取得工作區的大小,
也就是不含標題列的矩形大小~

"GetWindowRect"取得視窗大小,
也就是包含標題列的大小~

希望對你有幫助 表情


獻花 x1 回到頂端 [4 樓] From:台灣中華電信 | Posted:2005-09-13 10:02 |
f8806084
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x2
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

嗯嗯~~總算解決了,真得好開心,特別感謝freelife大大的提供,也謝謝板大的參與討論喔 表情

關鍵是這裡:

CRect rcFrame,rcClient;
GetWindowRect (rcFrame);
GetClientRect (rcClient);
int nCaptionY = ::GetSystemMetrics(SM_CYCAPTION);         //dialog的標題列
int nBorder = rcFrame.Height() - rcClient.Height() - nCaptionY; //邊界(使windows看起來有立體感)

如此一來,在::SetWindowPos()函式裡視窗大小設定時傳入stBmpInfo.bmWidth+nBorder(宽)和stBmpInfo.bmHeight+nCaptionY+nBorder(高)即可!!

此文章被評分,最近評分記錄
財富:20 (by codeboy) | 理由: 恭喜您解決問題喔~^^


獻花 x0 回到頂端 [5 樓] From:台灣數位聯合 | Posted:2005-09-13 12:14 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.059587 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言