gpt4 book ai didi

c# - 使用 C++ 在 C# 位图上绘制

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:53 24 4
gpt4 key购买 nike

我有一个第 3 方 dll(纯 C++),它在 HDC 上绘制了一些行。我想在 C# 位图或窗体上显示这些行。

我试图为 C++ 提供 Graphics.FromImage(bitmap) 的 HBITMAP 或 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(),否则您将看不到绘图结果。

关于c# - 使用 C++ 在 C# 位图上绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11261256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com