将WPF控制屏幕外渲染到位图

时间:2012-05-22 09:19:36

标签: wpf winforms devexpress xtragrid lync

我必须将Lync PresenceIndicator WPF控件集成到使用DevExpress XtraGrid的WinForm应用程序中。

我已阅读DevExpress文档和第三方控件集成工作。如果我单击编辑我的列,则会绘制托管的Lync控件并且可以正常工作。

我遇到的问题是当列未处于编辑模式时的控件画家。 我无法将Lync PresenceIndicator WPF控件渲染为位图,控件未附加到任何窗口,而是在屏幕外。

知道我在这里做错了吗?

画家的代码片段。

    lyncControl = New PresenceIndicator()

    lyncControl.Source = info.ViewInfo.DisplayText
    lyncControl.ContextualInformation = New ConversationContextualInfo()

    lyncControl.Measure(New Size(info.Bounds.Width, info.Bounds.Height))
    lyncControl.Arrange(New Rect(New Size(info.Bounds.Width, info.Bounds.Height)))
    lyncControl.UpdateLayout()

    Dim target As RenderTargetBitmap = New RenderTargetBitmap(info.Bounds.Width, info.Bounds.Height, 96, 96, PixelFormats.Pbgra32)
    target.Render(lyncControl)

    Dim encoder As BmpBitmapEncoder = New BmpBitmapEncoder()
    encoder.Frames.Add(BitmapFrame.Create(target))

    Using myStream As MemoryStream = New MemoryStream()
        encoder.Save(myStream)
        info.Graphics.DrawImage(Bitmap.FromStream(myStream), 0, 0)
    End Using

0 个答案:

没有答案