2012-06-29 90 views
5

我有一個第三方DLL(普通C++),它在HDC上繪製了一些行。 我想要在C#位圖或表單上有這些行。用C++繪製C#位圖

我試圖給C++ HBITMAP或Graphics.FromImage(位圖)的HDC ,但以上方式都不適用於我。

隨着MFC TestApp一切工作正常使用下面的代碼

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

Draw(dc); 

我的問題是: 我有什麼做的/使用上繪製一個位圖或與上述拉伸形成(HDC)方法?

我希望你能幫助我。 由於提前,

帕特里克

+1

你可以發佈你嘗試過的C#代碼嗎?它與[GetHdc示例]不同(http://msdn.microsoft.com/en-us/library/9z5820hw(v = VS.80).aspx)? – PhilMY

回答

5

要在C#位圖使用繪製此代碼:

 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); 
    } 

完成繪圖後,不要忘記調用Graphics.ReleaseHdc(),否則您將看不到繪製結果。