public virtual void Dispose() { if(SystemMemoryTexture != null) { SystemMemoryTexture.Dispose(); SystemMemoryTexture = null; } if(m_d2DRenderTarget != null) { m_d2DRenderTarget.Dispose(); m_d2DRenderTarget = null; } if (m_renderTargetTexture != null) { m_renderTargetTexture.Dispose(); m_renderTargetTexture = null; } if (m_textFormat != null) { m_textFormat.Dispose(); m_textFormat = null; } if(m_directWriteFactory != null) { m_directWriteFactory.Dispose(); m_directWriteFactory = null; } foreach (var stateBlock in m_stateStack) { stateBlock.Dispose(); } m_stateStack.Clear(); }
public void DrawText(Brush brush, string text, float x, float y, float fontSize) { m_drawStateManagement.DrawPreamble(); if (m_directWriteFactory == null) { m_directWriteFactory = new Factory(FactoryType.Isolated); } if (m_textFormat == null || m_textFormat.FontSize != fontSize) { m_textFormat = new TextFormat(m_directWriteFactory, "Segoe UI", FontWeight.Bold, FontStyle.Normal, FontStretch.Normal, fontSize, ""); } PushState(); //var area2 = new RectangleF(0, 0, , ); if (x > Width - 1 || y > Height - 1) return; var area = new RectangleF(x, y, Width, Height); var matrix = Matrix3x2.Identity; BrushHelper.PrepareBrush(brush, this, area, matrix, Matrix3x2.Identity); D2DRenderTarget.InternalRenderTarget.DrawText(text, m_textFormat, area.InternalRectangleF, brush.InternalBrush); PopState(); }