Ich möchte meine Swapchain auf dem Bildschirm verändern, indem ich die Größe meiner Windows-Formularanwendung ändere. Wenn ich das tue, ich brauche meine älteren Device, Puffer zu verfügen, Ziel etc ...Größenänderung der Swapchain bewirkt, dass Bitmap nicht verwendbar ist (SharpDX, directX)
Blick auf den Code unten:
Public Overrides Sub Resize(Width As Integer, Height As Integer)
m_backBuffer.Dispose()
m_d2dContext.Dispose()
m_2dTarget.Dispose()
m_swapChain.ResizeBuffers(2, Width, Height, Format.R8G8B8A8_UNorm, SwapChainFlags.None)
m_backBuffer = m_swapChain.GetBackBuffer(Of Surface)(0)
Dim properties As BitmapProperties = New BitmapProperties(New SharpDX.Direct2D1.PixelFormat(SharpDX.DXGI.Format.R8G8B8A8_UNorm, SharpDX.Direct2D1.AlphaMode.Premultiplied), 96, 96)
Dim dxgiDevice As SharpDX.DXGI.Device = m_device.QueryInterface(Of SharpDX.DXGI.Device)()
Dim d2dDevice As SharpDX.Direct2D1.Device = New SharpDX.Direct2D1.Device(dxgiDevice)
m_d2dContext = New SharpDX.Direct2D1.DeviceContext(d2dDevice, SharpDX.Direct2D1.DeviceContextOptions.None)
m_2dTarget = New SharpDX.Direct2D1.Bitmap(m_d2dContext, m_backBuffer, properties)
m_d2dContext.Target = m_2dTarget
CType(m_Context, GpuDrawingContext).setRenderTarget(m_d2dContext)
End Sub
Das Problem, wenn ich das tun, ist, dass die Bitmap hatte ich zuvor erstellt, um auf dem Bildschirm angezeigt zu werden benötigt einen DeviceContext als Parameter für ihre Erstellung. Jetzt, da ich einen neuen DeviceContext auf die Größenanpassung installiere, erhalte ich den Fehler WrongFactory, wenn ich die Bitmap auf dem deviceContext zeichnen möchte, da sie nicht mit demselben DeviceContext erstellt werden, von dem wir sie zeichnen wollen.
Irgendwelche Lösungen für die Größenänderungsfunktion?