Можете ли вы более точно измерить ширину строки в WIN32, чем использовать функцию GetTextMetrics и использовать tmAveCharWidth * strSize?Как найти ширину строки (в пикселях) в WIN32
ответ
Попробуйте использовать GetTextExtentPoint32. Это использует текущий шрифт для данного контекста устройства для измерения ширины и высоты отображаемой строки в логических единицах. Для режима отображения по умолчанию MM_TEXT, 1 логический блок - 1 пиксель.
Однако, если вы изменили режим отображения для текущего контекста устройства, логический блок может быть не таким, как пиксель. Вы можете прочитать о разных mapping modes on MSDN. В режиме отображения вы можете преобразовать размеры, возвращаемые вам с помощью GetTextExtentPoint32 в пиксели.
Спасибо, это то, за что я был lokking. :) – Razvi
GetTextExtentPoint32 использует «логические единицы»; не пикселей: http://msdn.microsoft.com/en-us/library/dd144938%28VS.85%29.aspx – user20493
@user хороший улов. Когда режим отображения MM_TEXT (по умолчанию), 1 логический блок = 1 пиксель, но это необязательно должно быть истинным. Я изменю свой ответ. –
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
В зависимости от того, как вы используете это, вы можете использовать DrawText с указанным DT_CALCRECT, и он (он всегда делает это достаточно точно для меня) вычисляет размер требуемого прямоугольника на основе текста/шрифта/etc.
Я не знаю наверняка, но мне кажется, что:
HDC hDC = GetDC(NULL);
RECT r = { 0, 0, 0, 0 };
char str[] = "Whatever";
DrawText(hDC, str, strlen(str), &r, DT_CALCRECT);
может работать.
Спасибо, попробовал и показал ту же ширину, что и GetTextExtentPoint32 :). – Razvi
Это гораздо лучшее решение, чем 'GetTextExtentPoint32', поскольку оно выводит режим отображения из уравнения. Одна вещь, которую нужно изменить автору, это флаги для 'DrawText'. Установите его в 'DT_CALCRECT | DT_NOPREFIX | DT_SINGLELINE'. Затем полученную ширину можно вычислить как «abs (r.right - r.left)»; – c00000fd
Для Builder C++ сначала создайте новый TLabel динамически, а затем измените атрибуты шрифта. Установите свой TLabel как autosize. После этого вы можете получить TLabel width witch, представляющий вашу ширину строки в пикселях.
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. Gtk как рассчитать ширину строки в пикселях
- 2. Как получить ширину строки в пикселях?
- 3. Как вычислить ширину строки в пикселях?
- 4. Winapi получить ширину строки в пикселях
- 5. Длина строки в пикселях
- 6. Найти ширину символов в пикселях для различных шрифтов Arial
- 7. Как получить ширину строки в пикселях (/ логических единицах)?
- 8. Cocoa получить ширину строки в пикселях от шрифта
- 9. Gnuplot: Как указать ширину графика в пикселях?
- 10. Как установить ширину (в пикселях) входного ползунка?
- 11. вычислить ширину в пикселях в Opera
- 12. Длина строки в пикселях
- 13. Получить ширину AlertDialog в пикселях или dp
- 14. Bootstrap получить ширину столбца div в пикселях
- 15. CSS градиент: определить ширину в пикселях
- 16. Как получить ширину строки в Libgdx?
- 17. Как получить ширину столбца сетки в пикселях в WPF?
- 18. Измерение длины строки в пикселях в javascript
- 19. Получить длину строки в пикселях
- 20. Как измерить высоту строки таблицы в пикселях
- 21. Как установить ширину и высоту холста Android в пикселях?
- 22. Как я могу получить ширину устройства iOS в пикселях?
- 23. Как запрограммировать ширину представления Android EditText в DP (не пикселях)
- 24. Как установить максимальную ширину в процентах и пикселях?
- 25. Как получить ширину текста в пикселях, используя JavaScript или jQuery?
- 26. Как рассчитать ширину оболочки Windows CMD в пикселях?
- 27. Найти позицию каретки в textarea в пикселях
- 28. Vaadin HorizontalSplitPanel: установите ширину правой стороны в пикселях
- 29. Вычислить длину строки в пикселях в openCV
- 30. Давая ширину/высоту в пикселях в процентах от содержимого HTML
Следует отметить, что «tmAveCharWidth * strSize» является только нормальным для шрифтов с фиксированной шириной. –