2012-06-29 11 views
5

के साथ सी # बिटमैप पर चित्रण मेरे पास एक तृतीय पक्ष डीएल (सादा सी ++) है जो कुछ लाइनों को एचडीसी पर खींचता है। मैं इन लाइनों को सी # बिटमैप या फॉर्म पर रखना चाहता हूं।सी ++

मैंने सी ++ को एचबीआईटीएमएपी या ग्राफिक्स के एचडीसी देने की कोशिश की। फ्रॉम इमेज (बिटमैप) लेकिन उपर्युक्त तरीकों में से कोई भी मेरे लिए काम नहीं करता है।

एक MFC TestApp सब कुछ के साथ

ठीक निम्नलिखित कोड का उपयोग कर काम करता है

HWND handle = pStatic->GetSafeHwnd(); 
CDC* dc = pStatic->GetDC(); 

Draw(dc); 

मेरा प्रश्न है: क्या मैं/उपयोग करने के लिए एक बिटमैप पर आकर्षित या इसके बाद के ड्रा के साथ बनाने के लिए है (HDC) विधि ?

मुझे आशा है कि आप मेरी मदद कर सकते हैं। अग्रिम धन्यवाद,

पैट्रिक

+1

क्या आप सी # कोड पोस्ट कर चुके हैं? क्या यह [इस GetHdc उदाहरण] से अलग है (http://msdn.microsoft.com/en-us/library/9z5820hw (v = VS.80) .aspx)? – PhilMY

उत्तर

5

एक सी # बिटमैप उपयोग पर इस कोड को आकर्षित करने के लिए:

 Graphics gr = Graphics.FromImage(MyBitmap); 
     IntPtr hdc = gr.GetHdc(); 
     YourCPPDrawFunction(hdc); 
     gr.ReleaseHdc(hdc); 

एक YourCPPDrawFunction का एक उदाहरण है:

void YourCPPDrawFunction(HDC hDc) 
    { 
     SelectObject(hDc, GetStockObject(BLACK_PEN)); 
     Rectangle(hDc, 10, 10, 20, 20); 
    } 

सीधे आकर्षित करने के लिए एक फॉर्म सतह पर, इस कोड का उपयोग करें:

protected override void OnPaint(PaintEventArgs e) 
    { 
     base.OnPaint(e); 
     IntPtr hdc = e.Graphics.GetHdc(); 
     YourCPPDrawFunction(hdc); 
     e.Graphics.ReleaseHdc(hdc); 
    } 

ग्राफिक्स.ReleaseHdc() को ड्राइंग करने के बाद कॉल करना न भूलें, अन्यथा आपको अपने ड्राइंग के परिणाम नहीं दिखाई देंगे।