2011-01-17 6 views
7

मुझे लगता है कि मैं समझता हूँ कि अगर मैं एक "डिवाइस contect" में "एक वस्तु" का चयन करें क्या होता है, और अगर यह वस्तु एक ब्रश, फ़ॉन्ट, कलम है: इन वस्तुओं में से charactersicts इसलिए आगे उपयोग किया जाता है डिवाइस संदर्भ पर ड्राइंग के लिए।SelectObject (डीसी, एचबीएमपी) क्या करता है?

हालांकि, मुझे समझ में नहीं आता कि डिवाइस संदर्भ में बिटमैप चुनने के बाद क्या होता है, बहुत कम, ऐसा क्यों करना आवश्यक है।

मैं एक प्रोग्राम है जो somehwere

HDC dc = ::GetDC(hWnd); 

ffBitmap = ::CreateCompatibleBitmap(dc, windowWidth, windowHeight); 
ffMemoryDc = ::CreateCompatibleDC(dc); 

hOldBitmap   = (HBITMAP) ::SelectObject(ffMemoryDc, ffBitmap); 

करता है और बाद में ffMemoryDc पर्यत खींचता है और फिर है * BitBlt * एक खिड़की की असली डिवाइस संदर्भ में ffMemoyDc है।

BitBlt (dc, 
     0, 0, windowWidth, windowHeight, 
     ffMemoryDc, 
     0, 0, 
     SRCCOPY 
     ); 

चर ffBitmap पूरे कार्यक्रम में कहीं और नहीं संदर्भित है, फिर भी, अगर मैं SelectObject (ffBitmap), कुछ भी नहीं तैयार की है नहीं करते हैं, तो यह आवश्यक है।

अगर कोई यहां कुछ प्रकाश डाल सकता है तो मैं सराहना करता हूं कि यहां क्या होता है।

+1

इसे रबर स्टैंप के रूप में सोचें। SelectObject द्वारा बनाया गया, बिटबल्ट के साथ लागू किया गया। अतिरिक्त संकेत महत्वपूर्ण है। –

उत्तर

2

इस तरह यह काम करता है। डीसी में आपके द्वारा चुने गए बिटमैप बिटमैप है जिसे "पेंट किया गया" है। MSDN का हवाला देते हुए: एक आवेदन के संचालन ड्राइंग के लिए एक स्मृति डिवाइस संदर्भ का उपयोग करने से पहले

, यह डिवाइस के संदर्भ में सही चौड़ाई और ऊंचाई की एक बिटमैप चयन करना होगा।

संबंधित मुद्दे