【发布时间】:2021-12-07 19:56:59
【问题描述】:
我正在尝试使用 Blazor Wasm 作为学习练习来构建一个基本的绘图应用程序。通过 Blazor.Extensions.Canvas 提供的 API 绘制到画布似乎工作正常,但我正在尝试将画布的内容保存到 PNG 并且我遇到了问题。由于在 Blazor.Extensions.Canvas 提供的 C# 包装器中没有此方法,因此我在 index.html 的脚本标记内有一个简单的 JS 函数:
function saveCanvasContents(canvcont) //this parameter is supposed to be the canvas context object
{
return canvcont.toDataURL();
}
从 C# 组件调用如下:
Object testObject = await jsRuntime.InvokeAsync<Object>("saveCanvasContents", new object[] {_context});
_context 这里是 Blazor Extensions Canvas 的上下文,由_context = await CanvasReference.CreateCanvas2DAsync(); 在OnAfterRenderAsync 中生成。
无论如何,运行它会在浏览器控制台中生成Microsoft.JSInterop.JSException: canvcont.toDataURL is not a function。我的直觉是,这是因为我传递的不是 HTMLCanvasElement,因此没有 toDataURL。将对画布组件的引用(上面的 CanvasReference,它的类型为 BECanvasComponent)传递给它具有相同的结果。我是否误解了 Blazor 的 JS interop / JS 的基本知识,还是在 Blazor 中有更好的方法来解决这个问题?
【问题讨论】:
标签: javascript c# html5-canvas blazor