일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- parent padding
- es6
- tailwindCSS
- 문제해결
- accordian
- 제어컴포넌트
- ㅡ
- 화살표2개
- QueryClient
- CustomHook
- ignore padding
- createPortal
- ?? #null병합연산자
- BFC
- 서초구보건소 #무료CPR교육
- 부모패딩
- twoarrow
- debouncing
- react
- Carousel
- 부모요소의 패딩 무시
- vite
- transition
- 함수형프로그래밍
- BlockFormattingContext
- alias설정
- DOM
- useQueryClient
- 리액트
- 조건부스타일
Archives
- Today
- Total
프론트엔드 첫걸음
캔버스 크기를 바꾸었을때 폰트설정 다시 해줘야한다 본문
문제상황
텍스트 크기에 맞춰 캔버스 사이즈를 바꾸는 예제에서 measureText를 사용해 canvas.width를 바꿔준 후에 font에 관한 설정이 사라지는 것을 발견
FONT_SIZE = Math.floor(innerWidth * 0.15)
ctx.font = FONT_SIZE + 'px Creepster, cursive'
canvas.width = ctx.measureText(TEXT).width
canvas.height = FONT_SIZE
해결
https://stackoverflow.com/questions/65602038/cannot-set-canvas-width-and-change-font-at-the-same-time
캔버스 크기를 변경하면 컨텍스트도 재설정되기 때문에 font size에 대한 설정이 사라졌던 것이다.
캔버스 크기를 바꾸면 font에 관한 설정을 다시 해줘야한다.
FONT_SIZE = Math.floor(innerWidth * 0.15)
ctx.font = FONT_SIZE + 'px Creepster, cursive'
canvas.width = ctx.measureText(TEXT).width
canvas.height = FONT_SIZE
//잃어버린 폰트크기에 대한 설정 다시 해줘야함.
ctx.font = FONT_SIZE + 'px Creepster, cursive'
ctx.textAlign = 'center'
ctx.textBaseline = 'middle'
ctx.fillText(TEXT, canvas2.width / 2, canvas2.height / 2)
* measureText
CanvasRenderingContext2D.measureText() 메서드는측정된 텍스트에 대한 정보(예: 너비)가 포함된 개체를 반환한다.
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
let text = ctx.measureText("Hello world");
console.log(text.width); // 56;
'개발 공부 > canvas' 카테고리의 다른 글
requestAnimationFrame 효율적으로 사용하기 (0) | 2023.05.26 |
---|---|
canvas width, height 설정 , devicePixelRatio (0) | 2023.05.26 |