全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4699
推到 Plurk!
推到 Facebook!

HBITMAP, HDC, SelectObject, DeleteObject之間的關係為何?

尚未結案
celesta
一般會員


發表:1
回覆:1
積分:0
註冊:2004-12-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-03 00:00:13 IP:61.231.xxx.xxx 未訂閱
小弟有三個問題,是關於HBITMAP, HDC, SelectObject(), DeleteObject()之間的關係 Q1. 在HDC上進行繪圖會影響到其選入的HBITMAP? 自己試了一下,hdc是視窗DC handle HBITMAP sprite = (HBITMAP)LoadImage( ... ); //DDB HDC hMemDC = CreateCompatibleDC( hdc ); SelectObject( hMemDC, sprite ); //接著在hMemDC上亂畫一通... Ellipse( hMemDC... ); Rectangle( hMemDC... ); //刪除hMemDC, 另宣告hMemDC2並選入原來的sprite DeleteDC( hMemDC ); HDC hMemDC2 = CreateCompatibleDC( hdc ); SelectObject( hMemDC2, sprite ); Bitblt( hdc, ..... hMemDC ); 顯示出來的是亂畫過後的sprite, 所以說HDC和其選入的HBITMAP "有一定關聯"?? 那兩者的關係是什麼?? 所以又做了以下實驗... Q2. HBITMAP可否在選入DC後就刪除?? HBITMAP sprite = (HBITMAP)LoadImage( ... ); //DDB HDC hMemDC = CreateCompatibleDC( hdc ); SelectObject( hMemDC, sprite ); DeleteObject( sprite ); //選入後就刪除 Bitblt( hdc, ..... hMemDC ); //可以正常顯示sprite 如果說HDC和其選入的HBITMAP有關聯, 那為什麼還是可以正確顯示sprite圖樣?? 我已經刪除啦!! Q3. 再來就是說,HBITMAP似乎只能被選入一個DC?? HBITMAP sprite = (HBITMAP)LoadImage( ... ); //DDB HDC hMemDC1 = CreateCompatibleDC( hdc ); HDC hMemDC2 = CreateCompatibleDC( hdc ); SelectObject( hMemDC1, sprite ); SelectObject( hMemDC2, sprite ); Bitblt( hdc, ..... hMemDC1 ); //可以顯示sprite Bitblt( hdc, ..... hMemDC2 ); //無法顯示!! 除非在SelectObject( hMemDC2, sprite );之前刪除hMemDC1, 否則SelectObject( hMemDC2, sprite );起不了作用?? 煩請各位高手幫忙解答, 謝謝!
系統時間:2024-03-28 18:47:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!