Я искал по Интернету, чтобы попытаться найти код, который позволяет мне нарисовать текст из обычного шрифта (а не шрифта спрайта) и найти только фрагменты, которые мне совсем не помогли.Как нарисовать текст с помощью SharpDX?
У кого-то есть полный исходный файл, который позволяет мне легко рисовать текст с помощью SharpDX и D3D11/DirectWrite? Я хочу создать прозрачное оверлейное окно, которое отображает некоторую информацию (например, Fraps). Я нашел учебник, который это делает, но он использует шрифт sprite, и я хочу, чтобы он настраивался с точки зрения размера и шрифта.
Это то, что я до сих пор:
using System;
using SharpDX;
using SharpDX.Direct3D11;
using SharpDX.Windows;
using SharpDX.Direct2D1;
using SharpDX.DirectWrite;
using SharpDX.DXGI;
namespace SharpDXRenderer
{
static class Program
{
[STAThread]
static void Main()
{
SharpDX.DirectWrite.TextFormat directWriteTextFormat;
SharpDX.DirectWrite.Factory directWriteFactory;
SharpDX.Direct2D1.SolidColorBrush directWriteFontColor;
SharpDX.Direct2D1.RenderTarget direct2DRenderTarget;
Surface d2dSurface;
RenderForm form = new RenderForm("Example");
var desc = new SwapChainDescription()
{
BufferCount = 1,//buffer count
ModeDescription = new ModeDescription(form.ClientSize.Width, form.ClientSize.Height, new Rational(60, 1), Format.R8G8B8A8_UNorm),//sview
IsWindowed = true,
OutputHandle = form.Handle,
SampleDescription = new SampleDescription(1, 0),
SwapEffect = SwapEffect.Discard,
Usage = Usage.RenderTargetOutput
};
var d2dFactory = new SharpDX.Direct2D1.Factory();
d2dSurface = backBuffer.QueryInterface<Surface>();
direct2DRenderTarget = new SharpDX.Direct2D1.RenderTarget(d2dFactory, d2dSurface, new SharpDX.Direct2D1.RenderTargetProperties(new SharpDX.Direct2D1.PixelFormat(Format.Unknown, SharpDX.Direct2D1.AlphaMode.Premultiplied)));
directWriteFactory = new SharpDX.DirectWrite.Factory();
directWriteTextFormat = new SharpDX.DirectWrite.TextFormat(directWriteFactory, "Calibri", 12) { TextAlignment = SharpDX.DirectWrite.TextAlignment.Leading, ParagraphAlignment = SharpDX.DirectWrite.ParagraphAlignment.Near };
directWriteFontColor = new SharpDX.Direct2D1.SolidColorBrush(direct2DRenderTarget, Color.White);
}
}
}
Я знаю, что отсутствует SwapChain, устройство, и я думаю, что текстуры, но я не уверен, если мне нужно больше вещей. Этот backBuffer - это то, что мне не хватает, но я не знаю, какой он тип.
d2dSurface = backBuffer.QueryInterface<Surface>();
Любая помощь в отношении текста и основного рисунка рисунка оценивается.
Заранее спасибо.
Добро пожаловать на переполнение стека. Как бы то ни было, ваш вопрос может быть проголосован за удаление, потому что вы запрашиваете внешний ресурс. Вместо этого вам нужно сделать shre ваш код и что не так с ним. Тогда люди могут помочь вам. –
Спасибо. У вас есть вопрос. Где я могу поместить код? У меня уже есть часть, но мне не хватает чего-то, чтобы заставить ее работать. Должен ли я опубликовать его как ответ на этот вопрос или что-то еще? Еще раз спасибо. – SPACoD
Просто отредактируйте свой пост и добавьте его в конец. Префикс каждой строки кода с 4 пробелами, и он будет отформатировать его. –