2016-12-13 10 views
-1

UWP의 이미지에 텍스트를 추가하고 싶습니다. win2D에서 Microsoft.Graphics.Canvas.Text를 사용할 때 Text로 이미지를 만들었습니다. 그렇다면 어떻게 내가 존재하는 이미지에 텍스트를 추가 할 수 있을까요? 트레이의 코멘트 @으로이UWP에서 이미지에 텍스트를 어떻게 추가 할 수 있습니까?

enter image description here

+0

그렇지만 UWP 그래픽이없는 ... 그냥 win2D을 가지고 ... – lizhihao6

+0

내가 봤 ... HTTP : //blog.okazuki.jp/ 입장/2016/03/03/125445 – Trey

+0

모든 업데이트? 내 대답이 너를 해결 했니? –

답변

2

Thanks.Like, 우리는 UWP에 Win2d을 사용할 수 있어야합니다. 는 Win2D.uwp를 설치하려면, 우리는 스트림에서 비트 맵을로드 할 CanvasBitmap.LoadAsync 방법 수를 사용해야 Install-Package Win2D.uwp

패키지 관리자 콘솔

에서 다음 명령을 실행합니다. 그런 다음 CanvasRenderTarget.CreateDrawingSession 메서드를 사용하여 이미지 및 텍스트를 그리기 세션에 그리는 데 사용할 수있는 새 그리기 세션을 반환 할 수 있습니다.

마지막으로 CanvasRenderTarget을 파일에 쓸 수 있어야합니다.

예를 들어

:

var picker = new FileOpenPicker(); 
picker.FileTypeFilter.Add(".png"); 
picker.FileTypeFilter.Add(".jpg"); 
picker.FileTypeFilter.Add(".jpeg"); 
var sourceFile = await picker.PickSingleFileAsync(); 
if (sourceFile == null) { return; } 
var device = CanvasDevice.GetSharedDevice(); 
var image = default(CanvasBitmap); 
using (var s = await sourceFile.OpenReadAsync()) 
{ 
    image = await CanvasBitmap.LoadAsync(device, s); 
} 
var offscreen = new CanvasRenderTarget(
    device, (float)image.Bounds.Width, (float)image.Bounds.Height, 96); 
using (var ds = offscreen.CreateDrawingSession()) 
{ 
    ds.DrawImage(image, 0, 0); 
    ds.DrawText("Hello world", 10, 10, Colors.Blue); 
} 
var displayInformation = DisplayInformation.GetForCurrentView(); 
var savepicker = new FileSavePicker(); 
savepicker.FileTypeChoices.Add("png", new List<string> { ".png" }); 
var destFile = await savepicker.PickSaveFileAsync(); 
using (var s = await destFile.OpenAsync(FileAccessMode.ReadWrite)) 
{ 
    var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, s); 
    encoder.SetPixelData(
     BitmapPixelFormat.Bgra8, 
     BitmapAlphaMode.Ignore, 
     (uint)offscreen.Size.Width, 
     (uint)offscreen.Size.Height, 
     displayInformation.LogicalDpi, 
     displayInformation.LogicalDpi, 
     offscreen.GetPixelBytes()); 
    await encoder.FlushAsync(); 
} 
+0

yap :) 고칠 수 있었지만 고맙습니다. – lizhihao6