Bạn có thể đo chiều rộng của chuỗi chính xác hơn trong WIN32 hơn là sử dụng hàm GetTextMetrics và sử dụng tmAveCharWidth * strSize không?Cách tìm chiều rộng của chuỗi (tính bằng pixel) trong WIN32
Trả lời
Hãy thử sử dụng GetTextExtentPoint32. Điều đó sử dụng phông chữ hiện tại cho bối cảnh thiết bị đã cho để đo chiều rộng và chiều cao của chuỗi được hiển thị trong các đơn vị lôgíc. Đối với chế độ ánh xạ mặc định, MM_TEXT, 1 đơn vị logic là 1 pixel.
Tuy nhiên, nếu bạn đã thay đổi chế độ ánh xạ cho bối cảnh thiết bị hiện tại, đơn vị lôgic có thể không giống như pixel. Bạn có thể đọc về số khác nhau mapping modes on MSDN. Với chế độ ánh xạ, bạn có thể chuyển đổi kích thước được trả về cho bạn bằng GetTextExtentPoint32 thành pixel.
Cảm ơn, đây là những gì tôi đã lokking cho. :) – Razvi
GetTextExtentPoint32 sử dụng "đơn vị logic"; không phải pixel: http://msdn.microsoft.com/en-us/library/dd144938%28VS.85%29.aspx – user20493
@user bắt tốt. Khi chế độ ánh xạ là MM_TEXT (mặc định), 1 đơn vị logic = 1 pixel, nhưng điều đó không nhất thiết phải đúng. Tôi sẽ sửa đổi câu trả lời của tôi. –
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); }
Phương pháp của bạn chắc chắn tốt hơn sử dụng GetTextExtentPoint32(). –
Tôi có một điều khó hiểu. layoutRect là gì? Tôi không hiểu nó – Kross
Tùy thuộc vào cách bạn đang sử dụng điều này, bạn có thể sử dụng DrawText với DT_CALCRECT được chỉ định và nó sẽ luôn luôn tính toán kích thước của hình chữ nhật bắt buộc dựa trên văn bản/phông chữ/v.v.
Tôi không biết chắc chắn, nhưng có vẻ như rằng:
HDC hDC = GetDC(NULL);
RECT r = { 0, 0, 0, 0 };
char str[] = "Whatever";
DrawText(hDC, str, strlen(str), &r, DT_CALCRECT);
có thể làm việc.
Cảm ơn, đã thử và hiển thị cùng chiều rộng với GetTextExtentPoint32 :). – Razvi
Đây là giải pháp tốt hơn nhiều so với 'GetTextExtentPoint32' vì nó mất chế độ ánh xạ ngoài phương trình. Một điều mà tác giả cần thay đổi là cờ cho 'DrawText'. Đặt nó thành 'DT_CALCRECT | DT_NOPREFIX | DT_SINGLELINE'. Chiều rộng kết quả có thể được tính như là 'abs (r.right - r.left);' – c00000fd
Đối với Builder C++ trước tiên hãy tạo TLabel động mới và sau đó thay đổi thuộc tính phông chữ.Set TLabel của bạn thành autosize. Sau đó, bạn có thể nhận được TLabel width witch đại diện cho chiều rộng chuỗi theo pixel.
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. Cách tính chiều rộng pixel của một String trong JavaFX?
- 2. Làm thế nào để tìm chiều rộng chuỗi trong C# (tính bằng pixel)
- 3. Đo chiều rộng pixel của một chuỗi
- 4. Làm cách nào để tính chiều rộng của một chuỗi theo pixel?
- 5. Làm cách nào để đặt chiều rộng (tính bằng pixel) của thanh trượt đầu vào?
- 6. Qt - Lấy chiều dài pixel của một chuỗi trong QLabel
- 7. Cách tính chiều rộng của phông chữ?
- 8. Xác định chiều rộng của chuỗi in bằng webapp
- 9. Cách tìm chiều rộng của div bằng JavaScript thô?
- 10. Cách tính chiều rộng của thanh cuộn?
- 11. Cách tính chiều cao và chiều rộng của đối tượng bằng camera chỉ trong iOS?
- 12. Độ dài của một chuỗi theo pixel
- 13. Làm cách nào để có chiều rộng chuỗi trong Libgdx?
- 14. Làm cách nào để nhận được chiều cao của đối tượng GWT tính bằng pixel?
- 15. Độ dài chuỗi tính bằng pixel trong Java
- 16. SDK iPhone: Làm cách nào để đo chiều rộng và chiều cao của chuỗi bằng Quartz?
- 17. Cách tìm chiều dài của một chuỗi trong R?
- 18. Cách lấy chiều rộng chuỗi
- 19. C# tính chiều cao của một chuỗi với chiều rộng đã cho
- 20. Cách tìm pixel-positon của con trỏ trong UITextView?
- 21. Tôi có thể trộn chiều rộng phần trăm và chiều rộng pixel trong tiêu đề bảng html của mình không?
- 22. CSS: chiều rộng của một liên kết không thay đổi bằng cách thiết lập thuộc tính chiều rộng
- 23. Chuyển đổi chiều rộng từ phần trăm pixel
- 24. Xác định chiều rộng của chuỗi trong canvas HTML5
- 25. chiều rộng và chiều cao cửa sổ biên giới trong Win32 - làm cách nào để tải xuống?
- 26. Tìm kiếm chuỗi nhị phân - chiều rộng thùng tối thiểu?
- 27. Tại sao chiều rộng Javascript của một ô trong một pixel quá ngắn?
- 28. Tôi làm cách nào để tìm chiều rộng của hình ảnh bằng cách sử dụng PHP?
- 29. iPhone CoreText: Tìm tọa độ pixel của một chuỗi con
- 30. tính toán động của chiều rộng UILabel trong UITableViewCell
Bạn nên lưu ý rằng "tmAveCharWidth * strSize" chỉ là sane cho phông chữ có chiều rộng cố định. –