Làm th? nào đ? tính toán đơn v? cơ b?n h?p tho?i v?i các h? th?ng d?a Font

ID c?a bài: 125681
Bung t?t c? | Thu g?n t?t c?

TÓM T?T

Bài vi?t này ch?ng t? làm th? nào đ? tính toán đơn v? cơ b?n h?p tho?i cho các h?p tho?i b?ng cách s? d?ng m?t phông ch? khác v?i Font h? th?ng trong Windows 95. B?n có th? s? d?ng tính toán này đ? xây d?ng m?u h?p tho?i trong b? nh? ho?c tính toán Kích thư?c h?p tho?i.

THÔNG TIN THÊM

M?i m?u h?p tho?i ch?a các phép đo ch? ra v? trí, Chi?u r?ng và chi?u cao c?a h?p tho?i và ki?m soát nó ch?a. Đây đo đ?c là thi?t b? đ?c l?p, do đó, m?t ?ng d?ng có th? s? d?ng m?t đ?a đơn m?u đ? t?o ra cùng m?t h?p tho?i cho t?t c? các lo?i thi?t b? hi?n th?. Đi?u này đ?m b?o r?ng m?t h?p tho?i s? có cùng m?t t? l? và xu?t hi?n trên màn h?nh t?t c? m?c dù đ? phân gi?i khác nhau và t? l? khía c?nh gi?a màn h?nh.

Hơn n?a, các đo đ?c h?p tho?i đư?c cho theo đơn v? cơ b?n h?p tho?i. M?t trong nh?ng đơn v? cơ s? ngang là tương đương v?i m?t ph?n tư chi?u r?ng nhân v?t trung cho font h? th?ng. M?t trong nh?ng đơn v? d?c cơ s? là tương đương v?i m?t th? tám c?a các trung b?nh chi?u cao nhân v?t cho font h? th?ng. M?t ?ng d?ng có th? truy xu?t s? đi?m ?nh trên m?t đơn v? cơ s? cho vi?c hi?n th? hi?n t?i b?ng cách s? d?ng các Ch?c năng GetDialogBaseUnits. T? th?p th? t? c?a giá tr? tr? l?i, t? ch?c năng GetDialogBaseUnits, ch?a các đơn v? cơ s? ngang và các cao-tr?t t? t? c?a giá tr? tr? l?i, t? ch?c năng GetDialogBaseUnits, ch?a các đơn v? cơ s? d?c.

S? d?ng thông tin này, b?n có th? tính toán các h?p tho?i đơn v? cơ s? cho m?t h?p tho?i h?p b?ng cách s? d?ng phông ch? khác v?i font h? th?ng:
horz pixels == 2 * horz dialog units * (average char width  of dialog font
                        / average char width of system font)
vert pixels == 2 * vert dialog units * (average char height of dialog font
                        / average char height of system font)
				
Như font ch? c?a m?t thay đ?i h?p tho?i, kích thư?c th?c t? và v? trí c?a m?t ki?m soát c?ng thay đ?i.

M?t trong nh?ng đơn v? cơ b?n h?p tho?i là tương đương v?i s? đi?m ?nh trên m?i h?p tho?i h?p đơn v? như sau:
1 horz dialog base unit == (2 * average char width  dialog font / 
                                average char width  system font) pixels
1 vert dialog base unit == (2 * average char height dialog font / 
                                average char height system font) pixels
				
Nhân v?t trung b?nh chi?u r?ng và chi?u cao c?a m?t phông ch? có th? đư?c tính như sau:
hFontOld = SelectObject(hdc,hFont);
GetTextMetrics(hdc,&tm);
GetTextExtentPoint32(hdc,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst"
            "uvwxyz",52,&size);
avgWidth = (size.cx/26+1)/2;
avgHeight = (WORD)tm.tmHeight;
				
L?nh v?c tmAveCharWidth c?u trúc TEXTMETRIC ch? x?p x? các th?c t? trung r?ng (thư?ng nó mang l?i cho đ? r?ng c?a các ch? cái "x") và do đó, s? th?t trung r?ng ph?i đư?c tính toán đ? phù h?p v?i giá tr? đư?c s? d?ng b?i h? th?ng.

B?n có th? s? d?ng ch?c năng MapDialogRect đ? chuy?n đ?i đơn v? h?p tho?i vào pixel, nhưng không có ch?c năng mà s? chuy?n đ?i pixel vào h?p tho?i đơn v?. B?n có th? s? d?ng công th?c hi?n th? ? đây đ? th?c hi?n chuy?n đ?i này.

THAM KH?O

Đ? bi?t thêm chi ti?t v? ch? đ? này, xin vui l?ng xem bài vi?t sau trong cơ s? ki?n th?c Microsoft:
145994 Làm th? nào đ? tính toán đơn v? h?p tho?i khi không s? d?ng Font h? th?ng

Thu?c tính

ID c?a bài: 125681 - L?n xem xét sau cùng: 17 Tháng Tám 2011 - Xem xét l?i: 2.0
T? khóa: 
kbdlg kbhowto kbmt KB125681 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:125681

Cung cấp Phản hồi