繁体   English   中英

使用C ++在C#位图上绘图

[英]Drawing on C# Bitmap with C++

我有一个在HDC上画线的第三方dll(普通C ++)。 我想将这些行放在C#位图或窗体上。

我试图给C ++一个HBITMAP或Graphics.FromImage(bitmap)的HDC,但是以上方法都不适合我。

使用MFC TestApp,使用以下代码即可正常运行

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

Draw(dc);

我的问题是:使用上述Draw(HDC)方法在位图或表单上绘制该怎么做/使用?

我希望你能帮助我。 提前致谢,

帕特里克

要在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(),否则您将看不到绘制结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM