0
간단한 이미지를 생성하고 WinRT/XAML로 표시하려고합니다. SharpDX로 그려진 이미지의 바이트 []를 원합니다. 내 접근법 지금까지 괜찮아 보이지만 결과 버퍼가 비어 있습니다.SharpDX를 사용하여 WinRT에서 이미지를 바이트로 생성
CopyPixels도 시도했지만 0도 생성했습니다.
누군가 올바른 방향으로 나를 가리킬 수 있습니까? 저도 같은 문제로 실행
private static byte[] Draw(TexRenderer trnder, int width, int height)
{
var wicFactory = new ImagingFactory();
var dddFactory = new SharpDX.Direct2D1.Factory();
var dwFactory = new SharpDX.DirectWrite.Factory();
var wicBitmap = new Bitmap(
wicFactory,
width,
height,
SharpDX.WIC.PixelFormat.Format32bppBGR,
BitmapCreateCacheOption.CacheOnLoad);
var renderTargetProperties = new RenderTargetProperties(
RenderTargetType.Default,
new SharpDX.Direct2D1.PixelFormat(Format.Unknown, AlphaMode.Unknown),
dddFactory.DesktopDpi.Width,
dddFactory.DesktopDpi.Height,
RenderTargetUsage.None,
FeatureLevel.Level_DEFAULT);
var renderTarget = new WicRenderTarget(
dddFactory,
wicBitmap,
renderTargetProperties)
{
TextAntialiasMode = TextAntialiasMode.Cleartype
};
renderTarget.BeginDraw();
var textFormat = new TextFormat(dwFactory, "Consolas", 48)
{
TextAlignment = TextAlignment.Center,
ParagraphAlignment = ParagraphAlignment.Center
};
var textBrush = new SolidColorBrush(
renderTarget,
Color.Blue);
renderTarget.Clear(Color.White);
renderTarget.DrawText(
"Hi, mom!",
textFormat,
new RectangleF(0, 0, width, height),
textBrush);
var bitmapRenderTarget = new BitmapRenderTarget(renderTarget, CompatibleRenderTargetOptions.None);
trnder.Render(bitmapRenderTarget, 0, 0);
renderTarget.EndDraw();
var bitmaplock = wicBitmap.Lock(null, BitmapLockFlags.Read);
var dStream = new DataStream(bitmaplock.Data.DataPointer, bitmaplock.Stride * bitmaplock.Size.Height, true, true);
var buffer = new byte[bitmaplock.Stride * bitmaplock.Size.Height];
dStream.Write(buffer, 0, buffer.Length);
return buffer;
}
WPF는 WINRT하지 않습니다에
의 원시 텍스처 데이터에 대한 액세스가 필요합니다. WPF는 .Net입니다. WINRT는 .Net이 아닙니다. –
그가 WinRT/XAML을 의미한다고 가정합니다. 목성 –
아 물론 맞습니다. –