Thông tin: Tính toán chi?u cao h?p l? và đi?m kích thư?c c?a m?t phông ch?

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 74299 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

TÓM T?T

Đ? t?o m?t ch? trong môi trư?ng đ? h?a Microsoft Windows đư?c đưa ra ch? Kích thư?c yêu c?u đi?m, m?t ?ng d?ng ph?i tính toán chi?u cao h?p l? phông ch? v? các CreateFont()CreateFontIndirect() ch?c năng s? d?ng đơn v? h?p l? đ? xác đ?nh chi?u cao.

Đ? mô t? m?t phông ch? cho ngư?i dùng, m?t ?ng d?ng có th? tính toán m?t phông ch? đi?m Kích thư?c, đư?c đưa ra chi?u cao c?a nó. Bài vi?t này cung c?p các công th?c c?n thi?t đ? th?c hi?n các tính toán cho ch? đ? l?p b?n đ? MM_TEXT. B?n s? c?n ph?i L?y đư?c m?t phương tr?nh m?i đ? tính toán kích thư?c phông ch? trong m?t ch? đ? l?p b?n đ?.

THÔNG TIN THÊM

Đ? tính toán chi?u cao h?p l?, s? d?ng công th?c sau đây:
                                Point Size * LOGPIXELSY
   height = Internal Leading + -------------------------
                                          72
				
LOGPIXELSY là m?t s? đi?m ?nh ch?a trong m?t inch h?p l? trên các thi?t b?. Giá tr? này thu đư?c b?ng cách g?i các GetDeviceCaps() ch?c năng v?i ch? s? LOGPIXELSY. Giá tr? 72 là quan tr?ng b?i v? m?t inch có 72 đi?m.

V?n đ? v?i tính toán này là r?ng không có phương pháp đ? xác đ?nh các n?i b? d?n cho font b?i v? nó đ? không đư?c nêu ra đư?c t?o. Đ? ch?nh s?a m?t khó khăn này, s? d?ng các bi?n th? sau đây c?a công th?c:
            -(Point Size * LOGPIXELSY)
   height = --------------------------
                         72
				
Công th?c này c?ng có th? đư?c vi?t như sau:
   plf->lfHeight = -MulDiv (nPtSize, GetDeviceCaps (hdc, LOGPIXELSY), 72);
				
Khi m?t ?ng d?ng g?i các CreateFont() ho?c CreateFontIndirect() ch?c năng và ch? đ?nh m?t giá tr? tiêu c?c đ?i v?i tham s? chi?u cao, ánh x? phông cung c?p k?t qu? g?n nh?t cho chi?u cao nhân v?t ch? không ph?i là chi?u cao c?a t? bào. S? khác bi?t gi?a t? bào chi?u cao và chi?u cao nhân v?t là hàng đ?u th? gi?i n?i b?, như đ? ch?ng minh b?i bi?u đ? sau đây:
   ----------  <------------------------------
   |        |           |- Internal Leading  |
   | |   |  |  <---------                    |
   | |   |  |        |                       |- Cell Height
   | |---|  |        |- Character Height     |
   | |   |  |        |                       |
   | |   |  |        |                       |
   ----------  <------------------------------
				
Công th?c sau tính kích thư?c đi?m c?a phông:
                (Height - Internal Leading) * 72
   Point Size = --------------------------------
                           LOGPIXELSY
				
Các giá tr? chi?u cao và d?n đ?u n?i b? đư?c thu đư?c t? cácTEXTMETRIC c?u trúc d? li?u. LOGPIXELSY giá tr? thu đư?c t? cácGetDeviceCaps ch?c năng như đư?c nêu ? trên.

V?ng các tính toán đi?m kích thư?c đ?n s? nguyên g?n nh?t. Các c?a s?MulDiv() ch?c năng v?ng k?t qu? c?a nó và là m?t s? l?a ch?n tuy?t v?i đ? th?c hi?n các tính toán trư?c.

Thu?c tính

ID c?a bài: 74299 - L?n xem xét sau cùng: 17 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Windows Software Development Kit 3.1
  • Microsoft Win32 Application Programming Interface, khi đư?c dùng v?i:
    • Microsoft Windows NT Server 3.51
    • Microsoft Windows NT Server 4.0 Standard Edition
    • Microsoft Windows NT Workstation 3.5
    • Microsoft Windows NT Workstation 3.51
    • Microsoft Windows NT Workstation 4.0 Developer Edition
T? khóa: 
kbinfo kbmt KB74299 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:74299

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com