Example #1
0
        private Task TakeScreenshot(string path, SupportedImageFormat format)
        {
            var source = new TaskCompletionSource <Unit>();

            if (this.targetCanvas == null && !this.AssociatedObject.TryGetKanColleCanvas(out this.targetCanvas))
            {
                source.SetException(new Exception("艦これの Canvas 要素が見つかりません。"));
                return(source.Task);
            }

            var request = new ScreenshotRequest(path, source);
            var script  = $@"
(async function()
{{
	await CefSharp.BindObjectAsync('{request.Id}');

	var canvas = document.querySelector('canvas');
	requestAnimationFrame(() =>
	{{
		var dataUrl = canvas.toDataURL('{format.ToMimeType()}');
		{request.Id}.complete(dataUrl);
	}});
}})();
";

            this.AssociatedObject.JavascriptObjectRepository.Register(request.Id, request, true);
            this.targetCanvas.ExecuteJavaScriptAsync(script);

            return(source.Task);
        }