2012-06-29 43 views
5

Tôi có một dll bên thứ 3 (plain C++) vẽ trên HDC một số dòng. Tôi muốn có những dòng này trên C# Bitmap hoặc Form.Vẽ trên C# Bitmap với C++

Tôi đã cố gắng cung cấp cho C++ một HBITMAP hoặc HDC của Graphics.FromImage (bitmap) nhưng không có cách nào ở trên phù hợp với tôi.

Với tất cả mọi thứ MFC TestApp hoạt động tốt bằng cách sử dụng đoạn mã sau

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

Draw(dc); 

Câu hỏi của tôi là: gì làm tôi phải làm/sử dụng để vẽ trên một Bitmap hoặc hình thành với Draw trên (HDC) phương pháp ?

Tôi hy vọng bạn có thể giúp tôi. Cảm ơn trước,

Patrick

+1

Bạn có thể đăng mã C# mà bạn đã thử không? Khác với [ví dụ GetHdc này] (http://msdn.microsoft.com/en-us/library/9z5820hw (v = VS.80) .aspx)? – PhilMY

Trả lời

5

Để vẽ trên C# bitmap sử dụng mã này:

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

Một ví dụ về YourCPPDrawFunction là:

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

Để vẽ trực tiếp trên bề mặt biểu mẫu, sử dụng mã này:

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

Đừng quên gọi Graphics.ReleaseHdc() sau khi bạn vẽ xong, nếu không bạn sẽ không thấy kết quả của bản vẽ của mình.

Các vấn đề liên quan