2012-06-29 16 views
5

Bazı hatlarda bir HDC çeken bir 3. parti dll (normal C++) var. Bu satırların bir C# Bitmap veya Form üzerinde olmasını istiyorum.C++ ile Bitmap Çizim +

C++ bir HBITMAP veya Graphics.FromImage (bitmap) bir HDC vermeyi denedim, ancak yukarıdaki yollardan hiçbiri benim için çalıştı. Bir bitmap üzerinde çizmek ya da yukarıda Draw ile oluşturmak üzere/kullanabilecekleri yapmak zorunda mıyız ne (HDC) yöntemi: Bir MFC TestApp herşeyle

ince

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

Draw(dc); 

Benim sorum şu kodu kullanarak çalışıyor ?

Umarım bana yardımcı olabilirsin. peşin sayesinde

Patrick

+1

Denediğiniz C# kodunu yükleyebilir misiniz? Bu GetHdc örneğinden farklı mıdır (http://msdn.microsoft.com/en-us/library/9z5820hw (v = VS.80) .aspx)? – PhilMY

cevap

5

C# bitmap kullanımı ile ilgili bu kodu çizmek için:

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

bir YourCPPDrawFunction bir örnek:

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

doğrudan çizmek için Bir form yüzeyinde şu kodu kullanın:

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

Grafik çizimini tamamladıktan sonra Graphics.ReleaseHdc() öğesini çağırmayı unutmayın, aksi halde çiziminizin sonuçlarını göremezsiniz.