GetTextMetrics 함수를 사용하고 tmAveCharWidth * strSize를 사용하는 것보다 WIN32에서 더 정확하게 문자열의 너비를 측정 할 수 있습니까?WIN32에서 문자열의 너비를 찾는 방법
답변
것은 GetTextExtentPoint32를 사용해보십시오. 주어진 장치 컨텍스트의 현재 글꼴을 사용하여 렌더링 된 문자열의 너비와 높이를 논리 단위로 측정합니다. 기본 매핑 모드 인 MM_TEXT의 경우 1 논리 단위는 1 픽셀입니다.
그러나 현재 장치 컨텍스트에 대한 매핑 모드를 변경 한 경우 논리 단위가 픽셀과 다를 수 있습니다. 다른 mapping modes on MSDN에 대해 읽을 수 있습니다. 매핑 모드를 사용하면 GetTextExtentPoint32에 의해 반환 된 치수를 픽셀로 변환 할 수 있습니다.
VOID Example_MeasureString(HDC hdc) { Graphics graphics(hdc); // Set up the string. WCHAR string[] = L"Measure Text"; Font font(L"Arial", 16); RectF layoutRect(0, 0, 100, 50); RectF boundRect; // Measure the string. graphics.MeasureString(string, 12, &font, layoutRect, &boundRect); // Draw a rectangle that represents the size of the string. graphics.DrawRectangle(&Pen(Color(255, 0, 0, 0)), boundRect); }
귀하의 방법은 확실히 GetTextExtentPoint32()를 사용하는 것보다 낫습니다. –
나는 혼란스러운 것을 가지고있다. layoutRect는 무엇입니까? 나는 그것을 이해하지 못한다 – Kross
사용 방법에 따라 DT_CALCRECT가 지정된 DrawText를 사용할 수 있으며 텍스트/글꼴/등을 기준으로 필요한 사각형의 크기를 계산합니다 (항상 정확하게 처리됩니다).
내가 확실히 모르겠지만,이 보인다 :
HDC hDC = GetDC(NULL);
RECT r = { 0, 0, 0, 0 };
char str[] = "Whatever";
DrawText(hDC, str, strlen(str), &r, DT_CALCRECT);
가 작동하지 않을 수 있습니다.
Builder C++의 경우 먼저 새 TLabel을 동적으로 만들고 글꼴 특성을 변경하십시오. TLabel을 autosize로 설정하십시오. 그러면 TLabel 너비를 얻을 수 있습니다. 마녀는 문자열 폭을 픽셀 단위로 나타냅니다.
int WidthPixels (String font, int size, String text)
{
TLabel* label = new TLabel(Form1); // dynamic TLabel
label->AutoSize = true;
label->Font->Name = font; // your font
label->Font->Size = size; // your font size
label->Caption = text; // your string
return label->Width;
}
int width = WidthPixels("Times New Roman", 19 , "Hey");
- 1. 문자열의 날짜 형식을 찾는 방법
- 2. Gtk 문자열의 너비를 픽셀 단위로 계산하는 방법
- 3. 자바 스크립트에서 높이와 너비를 찾는 방법
- 4. px로 문자열의 너비를 계산하는 방법은 무엇입니까?
- 5. 자바 스크립트에서 문자열의 이메일과 이름을 찾는 방법
- 6. PHP에서 문자열의 문자 위치를 찾는 방법
- 7. socket을 win32에서 사용하는 방법
- 8. win32에서 HWND를 얻는 방법?
- 9. 문자열의 불균형 괄호를 찾는 알고리즘
- 10. 문자열의 순열을 찾는 방법은 무엇입니까?
- 11. C#에서 문자열의 표시 너비를 계산 하시겠습니까?
- 12. PGF (라텍스)에서 전체 그림 너비를 찾는 방법
- 13. win32에서 mingw에 makefile을 사용하는 방법
- 14. win32에서 배경 이미지를 변경하는 방법?
- 15. 메모리에서 문자열의 위치를 찾는 방법 (물리적 오프셋이 있음)?
- 16. VBA. 문자열의 첫 번째 숫자의 위치를 찾는 방법
- 17. 주어진 문서에서 문자열의 위치 또는 위치를 찾는 방법
- 18. VBScript : 동일하게 보이는 두 문자열의 차이를 찾는 방법
- 19. Java에서 문자열의 첫 번째 문자가 대문자인지 여부를 찾는 방법
- 20. 퍼지 매치로 문자열 내에서 부분 문자열의 위치를 찾는 방법
- 21. 문자열의 마지막 단어를 찾는 SQL 문
- 22. 문자열의 모든 img 태그를 찾는 방법은 무엇입니까?
- 23. 문자열의 정확한 중심을 찾는 방법은 무엇입니까?
- 24. win32에서 후킹
- 25. 텍스트의 유사성을 찾는 방법
- 26. UISearchBar 너비를 변경하는 방법
- 27. 문자열의 너비를 픽셀 단위로 가져 오는 방법은 무엇입니까?
- 28. .NET에서 Drawing.Bitmap을 통해 그리는 문자열의 픽셀 너비를 측정하는 방법은 무엇입니까?
- 29. Win32에서 Windows XP 스타일 글꼴을 사용하는 방법
- 30. 정규식으로 공백 위치를 찾는 방법
"tmAveCharWidth * strSize"는 고정 너비 글꼴에만 적용됩니다. –