public void Render(DXCanvas canvas) { Freeze(canvas.RenderDevice); canvas.RenderDevice.ImmediateContext.PixelShader.SetSampler(0, canvas.TextSamplerState); canvas.RenderDevice.ImmediateContext.PixelShader.SetShaderResource(0, SegoeUI.TextureView); canvas.Draw(TextMesh); }
public ComplexDynamicMesh(DXCanvas canvas, int chunkCount) { double scaleX = 1.0 / chunkCount; for (int i = 0; i < chunkCount; ++i) { DynamicMesh mesh = canvas.CreateMesh(); mesh.LocalTransform = new Matrix(scaleX, 0.0, 0.0, 1.0, -i / chunkCount, 0.0); DIPs.Add(mesh); } }
private void Canvas_OnDraw(DXCanvas canvas, DXCanvas.Layer layer) { Vector scale = new Vector(1.0 / Scroll.Area.Width, 1.0 / Scroll.Area.Height); Matrix cameraView = new Matrix(scale.X, 0, 0, scale.Y, -scale.X * Scroll.Area.Location.X, -scale.Y * Scroll.Area.Location.Y); canvas.CameraView = cameraView; Scroll.Size = new Size(canvas.RenderCanvas.ClientSize.Width / RenderSettings.DpiScale.X, canvas.RenderCanvas.ClientSize.Height / RenderSettings.DpiScale.Y); OnDraw?.Invoke(canvas, layer, Scroll); }
public TextManager(DXCanvas canvas) { double baseFontSize = 16.0; int desiredFontSize = (int)(RenderSettings.DpiScale.Y * baseFontSize); int fontSize = 16; int[] sizes = { 16, 20, 24, 28, 32 }; for (int i = 0; i < sizes.Length; ++i) { if (desiredFontSize < sizes[i]) { break; } fontSize = sizes[i]; } SegoeUI = Font.Create(canvas.RenderDevice, String.Format("SegoeUI_{0}_Normal", fontSize)); VertexBuffer = new DynamicBuffer <Vertex>(canvas.RenderDevice, BindFlags.VertexBuffer); IndexBuffer = new DynamicBuffer <int>(canvas.RenderDevice, BindFlags.IndexBuffer); TextMesh = canvas.CreateMesh(DXCanvas.MeshType.Text); TextMesh.UseAlpha = true; }