2014-10-13 3 views
-4

델파이의 TImage 구성 요소 캔버스에 쓰고 있습니다. Canvas.TextWidth를 사용하고 있지만 문자열의 글꼴 크기를 변경할 때 Canvas.textWidth 함수는 같은 값을 반환합니다.Canvas.TextWidth가 올바른 값을 반환하지 않습니다.

은 내가 원유에 TImage의캔버스와 예상치 못한 행동을 할 수없는 것으로 나타납니다 때문에 당신이 당신의 코드에서 어떤 점에서 잘못된 캔버스를 사용하고 있는지 의심

+2

사용중인 코드의 필수 부분을 포함하십시오. – bummi

+0

내 경험에 따르면 대부분의 경우 이러한 오류는 다음 이유 중 하나로 인해 발생합니다. 잘못된 캔버스를 사용하거나 잘못된 문자열을 함수에 전달 중입니다. 소스 코드를 제공하지 않으면 오류를 감지하는 데 도움을 줄 수 없습니다. (질문을 수정하면 내 downvote를 삭제할 의향이 있습니다.) – mg30rg

+0

관련 버튼을 사용할 수 없지만 도움이되는 답변은 http://stackoverflow.com/a/2548178/1960514입니다. 내 경우 엔 효과가있어. –

답변

5

델파이 XE6 작업입니다 간단한 테스트 케이스. 예 : 폼에 TImage의을 드롭하고 폼에 에서 OnCreate 이벤트이 추가

Image1.Canvas.Font.Size := 10; 
Caption := IntToStr(Image1.Canvas.TextWidth('FOO')); 

Image1.Canvas.Font.Size := 24; 
Caption := Caption + ' should be < ' + IntToStr(Image1.Canvas.TextWidth('FOO')); 

을 그리고 당신은 작은 Font.Size에 대한 작은 초기 TextWidth을 얻을 것이다.

대체로 Font.Size을 다른 캔버스 (?)에 설정하려고합니다. 다른 일부 구성 요소 (예 : TPanel)와 달리 TImage은 부모 컨트롤이나 양식의 글꼴을 "상속하지 않습니다.

코드가 올바른 캔버스으로 계속 작동하는지 확인하십시오.

관련 문제