一尘不染

如何在不创建窗口的情况下将WPF UserControl渲染为位图

c#

如何在不创建窗口的情况下将WPF UserControl渲染为位图?我需要呈现一个WPF
UserControl并将其上传到另一个程序。位图将通过Windows服务呈现,因此创建窗口不是一种选择(我知道有“虚拟”创建窗口的方法,但是不幸的是,在我的情况下,任何调用命令来创建窗口的方法都不是一种选择)。有没有一种方法可以将UserControl渲染而不将其绑定到Window?


阅读 369

收藏
2020-05-19

共1个答案

一尘不染

最终使用没有实际窗口的HwndHost。

void cwind()
    {
        Application myapp = new Application();
        mrenderer = new WPFRenderer();
        mrenderer.Width = 256;
        mrenderer.Height = 256;

        HwndSourceParameters myparms = new HwndSourceParameters();
        HwndSource msrc = new HwndSource(myparms);
        myparms.HwndSourceHook = new HwndSourceHook(ApplicationMessageFilter);

        msrc.RootVisual = mrenderer;
        myapp.Run();
    }
    static IntPtr ApplicationMessageFilter(
IntPtr hwnd, int message, IntPtr wParam, IntPtr lParam, ref bool handled)
    {
        return IntPtr.Zero;
    }
2020-05-19