css - 正确调整画布组件大小
问题描述
对于我当前的项目,我实现了一个 Angular 8 库,它为组件 Canvas 提供了一个画布元素。该组件可以包含在使用<app-canvas [width]="canvas.width" [height]="canvas.height"></app-canvas>
某个模板的任何 Angular 项目中。
如您所见,模板包含两个@Input
属性,width
并且height
. 通过在运行时执行动态 BabylonJS 游戏代码,如果某些参考变量发生变化,应该可以更新 Canvas 组件的宽度和高度。
我的问题是如何正确调整HTMLCanvasElement
实际渲染图像的大小。应该使用 CSS 参数调整画布元素本身的大小,还是应该更好地将其包装到一个容器中,该容器应该处理调整大小并仅将画布用作子元素?
使用ngStyle
和父容器导致“ExpressionChangedAfterItHasBeenCheckedError”:
<div id="canvas-container" [ngStyle]="{'width': gameState.get('screen.width') + 'px', 'height': gameState.get('screen.height') + 'px'}">
<canvas #canvas
(focus)="canvasFocused = true"
(blur)="canvasFocused = false">
</canvas>
</div>
解决方案
推荐阅读
- java - 如何解决这个 CodingBat 编码器问题?
- python - 使用日期控制中断逻辑
- c# - 是否可以在设置页面上的 .cshtml.cs 文件中执行 OnPost() 方法之前执行特定的代码块?
- wordpress - 将 GCP Wordpress CTD 连接到现有的负载均衡器?
- azure - Azure AD B2C 和组织组
- swift - 如何在启用 translatesAutoresizingMaskIntoConstraints 的情况下布局视图
- javascript - 如何渲染图标列表,总是递增一个?
- javascript - 如何从 JavaScript 中的数组中删除交替逗号,将相邻条目合并为一个?
- visual-studio-code - 如何摆脱 Visual Studio Code 中这些带下划线的东西?
- r - 将因子转换为数据框中的变量