Я использую машинопись для рисования элемента canvas.Я бы хотел, чтобы мой элемент canvas отвечал размеру экрана.Чтобы я мог сопоставить размер холста с родительским элементом div.
Я пытался использовать это , удаляя размер холста и предоставляя его в .css .Но это не помогает, потому что у меня есть два фиксированных элемента.Я нашел это решение, которому 8 лет канва изменяет размер .
Как я могу подойти к этой проблеме?Ответ, который я опубликовал, слишком сильно искажает качество изображения.Есть ли другой подход?
export class bar {
private canvas: HTMLCanvasElement;
private ctx: CanvasRenderingContext2D;
private width_canvas: number;
private height_canvas: number;
constructor(canvas: HTMLCanvasElement) {
this.canvas = < HTMLCanvasElement > canvas;
this.ctx = < CanvasRenderingContext2D > canvas.getContext('2d');
this.width_canvas = this.canvas.width;
this.height_canvas = this.canvas.height;
window.requestAnimationFrame(() => this.draw());
};
draw() {
let wid_bar: number = this.width_canvas - 400;
this.value.forEach((val, idx) => {
// draw bar background
this.ctx.save();
this.ctx.beginPath();
this.ctx.rect(200, (idx * (80)), wid_bar, 30);
this.ctx.fillStyle = yellow;
this.ctx.fill();
window.requestAnimationFrame(() => this.draw());
};
}
<div class="bar">
<canvas id="canvas" width="1200" height="200"> This does not work </canvas>
</div>