BILGI: Nokta boyutunu ve yazı tipini ve mantıksal yüksekliği hesaplama

Makale çevirileri Makale çevirileri
Makale numarası: 74299 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Özet

Yalnızca gereken nokta boyutunu verilen Microsoft Windows grafik ortamında bir yazı tipi oluşturmak için <a0></a0>, bir uygulama yüksekliğini belirtmek için mantıksal birim CreateFont() ve CreateFontIndirect() işlevleri kullanabilirsiniz çünkü yazı tipinin mantıksal yüksekliği hesaplamalısınız.

Kullanıcı için bir yazı tipini tanımlamak için <a0></a0>, yazı tipinin punto boyutu, yüksekliği verilen uygulama hesaplayabilirsiniz. Bu makalede, MM_TEXT eşleme modunu bu hesaplamaları gerçekleştirmek için formül sağlar. Başka bir eşleştirme modunda yazı tipi boyutunu hesaplamak için yeni bir Denklem türetilmesi gerekir.

Daha fazla bilgi

Mantıksal yüksekliği hesaplamak için <a0></a0>, aşağıdaki formülü kullanın:
                                Point Size * LOGPIXELSY
   height = Internal Leading + -------------------------
                                          72
				
LOGPIXELSY bir mantıksal inç aygıttaki içerdiği piksel sayısıdır. Bu değer, LOGPIXELSY dizinli GetDeviceCaps() işlevi çağrılarak alınır. 72 Değeri, bir inç 72 noktaları içerdiğinden önemlidir.

Bu hesaplama sorun henüz oluşturulmadı çünkü yazı tipini iç öndeki belirlemek için yöntem olmasıdır. Bu zorluk bir çözüm için <a0></a0>, formülün bir aşağıdaki türevi kullanın:
            -(Point Size * LOGPIXELSY)
   height = --------------------------
                         72
				
bu formül ayrıca aşağıdaki gibi yazılabilir:
   plf->lfHeight = -MulDiv (nPtSize, GetDeviceCaps (hdc, LOGPIXELSY), 72);
				
uygulama CreateFont() çağıran veya CreateFontIndirect() çalışır ve Yükseklik parametre için negatif bir değer belirtir, yazı tipi Eşleyicisi hücre yüksekliğini yerine karakter Yükseklik için en yakın eşleşme sağlar.. Tarafından aşağıdaki çizimde gösterildiği gibi iç satır aralığı, hücre yüksekliğini karakter yüksekliği arasındaki fark olan:
   ----------  <------------------------------
   |        |           |- Internal Leading  |
   | |   |  |  <---------                    |
   | |   |  |        |                       |- Cell Height
   | |---|  |        |- Character Height     |
   | |   |  |        |                       |
   | |   |  |        |                       |
   ----------  <------------------------------
				
punto yazı tipi boyutunu aşağıdaki formülle hesaplar:
                (Height - Internal Leading) * 72
   Point Size = --------------------------------
                           LOGPIXELSY
				
yükseklik ağ ve iç satır aralığı değerlerini TEXTMETRIC veri yapısı ' alınır. LOGPIXELSY değeri GetDeviceCaps işlevinden, yukarıda özetlenen olarak alınır.

Hesaplanan boyutu en yakın tamsayıya gelin. Windows MulDiv() işlevi, sonuç yuvarlanır ve önceki hesaplama gerçekleştirmek için mükemmel bir seçimdir.

Özellikler

Makale numarası: 74299 - Last Review: 21 Kasım 2006 Salı - Gözden geçirme: 3.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Windows Software Development Kit 3.1
  • Microsoft Win32 Uygulama Programlama Arabirimi, Ne zaman ne ile kullanilir:
    • Microsoft Windows NT Server 3.5
    • 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
Anahtar Kelimeler: 
kbmt kbinfo KB74299 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:74299

Geri Bildirim Ver

 

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