與使用GetTextMetrics函數和使用tmAveCharWidth * strSize相比,您可以更準確地測量WIN32中字符串的寬度嗎?如何在WIN32中查找字符串的寬度(以像素爲單位)
回答
嘗試使用GetTextExtentPoint32。它使用給定設備上下文的當前字體以邏輯單位測量渲染字符串的寬度和高度。對於默認映射模式MM_TEXT,1個邏輯單元爲1個像素。
但是,如果您更改了當前設備上下文的映射模式,則邏輯單元可能與像素不同。您可以閱讀有關不同的mapping modes on MSDN。使用映射模式,您可以將由GetTextExtentPoint32返回給您的維度轉換爲像素。
謝謝,這就是我所喜歡的。 :) – Razvi 2009-07-14 17:38:28
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()更好。 – 2015-10-31 05:24:12
我有一個困惑的事情。 layoutRect是什麼?我不明白 – Kross 2016-08-02 07:44:05
取決於你如何使用它,你可以使用DrawText和DT_CALCRECT指定的,它會(它總是對我來說相當準確)根據文本/字體等計算所需矩形的大小。
我不知道某些,但似乎:
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 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. 如何以像素爲單位獲取字符串的寬度?
- 2. 在GWT中計算字符串寬度(以像素爲單位)
- 3. 以像素爲單位的字符串寬度
- 4. 查找以像素爲單位的各種Arial字體的字符寬度
- 5. 如何以像素爲單位計算字符串字體寬度?
- 6. 可可從字體中獲取字符串的寬度(以像素爲單位)
- 7. Java中的字符串長度(以像素爲單位)
- 8. 如何以像素(/邏輯單位)獲取字符串的寬度?
- 9. 如何找到字符串在C#的寬度(像素)
- 10. 以像素爲單位的字符串長度
- 11. 根據字符串實際寬度以像素爲單位對數組排序
- 12. 如何計算JavaScript中字符串的長度(以像素爲單位)?
- 13. 如何確定固定寬度字體和最大寬度的最大字符數(以像素爲單位)
- 14. 如何將字符串長度轉換爲像素單位?
- 15. 如何以像素爲單位指定sidebarPanel的寬度?
- 16. 如何以像素爲單位獲取iOS設備的寬度?
- 17. 如何以像素爲單位計算Windows CMD shell的寬度?
- 18. 寬度(以像素爲單位)忽略最大寬度:100%
- 19. 獲取寬度(以像素爲單位)的高度尺寸(以%爲單位)
- 20. 如何在位圖中找到繪製字符串的寬度
- 21. 在openCV中以像素爲單位計算字符串的長度
- 22. 計算字符串寬度的奇怪行爲(以像素爲單位)以模擬文字換行
- 23. Java:以毫米爲單位獲取字符串的寬度
- 24. 如何爲TextView設置最小寬度(以字符爲單位)?
- 25. 如何計算對象的寬度,高度或長度(以像素爲單位)?
- 26. 以像素爲單位查找OpenGL ES對象的高度
- 27. 如何獲取字符串的像素寬度和高度?
- 28. 在matlab中查找像素寬度
- 29. 如何計算JavaFX中字符串的像素寬度?
- 30. 以像素爲單位在textarea中查找插入位置
您應該注意,「tmAveCharWidth * strSize」僅適用於固定寬度的字體。 – 2009-07-14 17:08:46