2015-07-22 25 views
6

Düz bir metni RTF Formatında dönüştürmeyi denerim. Bu nedenle, RichTextBox (WinForms) kullanıyorum.
İlgili yöntem, RTF İşaretlemeyi dize olarak kullanır.Zengin Metin Biçimi Satır Aralığı

Şimdi, işaretlemeye satır aralığı eklemek istiyorum. Ben 2 parametreler olduğunu bulduk: Ben \slmult0 ayarlarsanız

- \slX (Space between lines in twips) 
- \slmultX (either 0 or 1) 

, satır aralığı metnin satır yukarıda olduğunu.
\slmult1 ayarlandığında, satır aralığı
metnin altındadır.

aşağıdaki şekilde aralığı hesaplamak:

(lineSpacing + fontSize)*20 

I \slmult1 için \slmult0 anahtarlamalı zaman, belirlenen hat mesafesi \slmult0 ile biraz daha küçüktür.

Birisi bu davranışın nedenini biliyor mu? Başka bir formülle hesaplamak zorunda mıyım?

+1

kalıp olarak burada ara temsili olarak docx gibi bir şey geçmesi basit olabilir daha iyi. –

+0

_I, hat mesafesinin biraz daha küçük olduğunu belirledim _ Bunu nasıl yaptın? – TaW

+0

Örneğin, örneğin wordpad'de görebilirsiniz: Yeni bir RTF-File değişim aralığı '2' olarak oluşturun. Ardından, dosyayı kapatın + kapatın - kopyalayın -> kopyala \ slmult0 olarak değiştirin ve her iki dosyayı da wordpad ile karşılaştırın. – Chris2011931

cevap

2

\ slmult0 öğesini ayarlarsam satır aralığı metin satırının üzerindedir. \ slmult1'i ayarladığımda, satır aralığı metin satırının altında.

specs'da okuduğum gibi değil.

Bunu anlamak yolu, bu \slmult1\slN içinde N ile faktörü olarak ifade edilmektedir der ise \slmult0, \slN değeri bir birim bir mesafe olarak doğrudan kullanılabilir olduğunu söyler demektir Normal çizgi aralığı çarpılır.

Son mesaja bak here (bazı) daha fazla ayrıntı için! (Ancak, bir satırın çok geç çıkmasıyla ilgili bir not da vardır.)

\slN'da N işaretinin önemini de unutmayın! (Bu, yukarıda benim yorumun nedeni vardı:! Etkisi doğrultusunda en uzun karakteri büyüklüğüne bağlıdır, \sl234 demek ..)

Here bazı şeyler RTF güzel tartışmadır; birimlerle ilgili not:

RTF'deki ölçümler genellikle twip cinsindendir. Bir twip noktasında bir yirminci, yani bir inçin 1440'ıdır.

\: Bu

ve paragraflardan önce ve sonra ekstra boşluk net bir tanım (bir inçin bir buçuk sol girinti ayarlamak için, \ li2160 gibi) bazen bazı büyük sayılar yol açar SBN - Bu paragraftan önce fazladan (dikey) alan N twips (varsayılan: 0) San \
- Bu paragraftan sonra N ekstra (dikey) alan twips (varsayılan: 0)

Here vardır daha doğrudan talimatları: çift boşluk için

bir paragraf, \ sl480 \ slmult1 sağ \ pard sonra kod koydu. Üç boşluk için, \ sl720 \ slmult1 kullanın. Sadece 1,5 aralıklı olması için \ sl360 \ slmult1 kullanın. Tek aralıklı bir paragraf varsayılan değerdir ve belirli bir kod gerektirmez. (Sihirli numaralar 480, 720 ve 360 ​​ paragrafta metnin nokta büyüklüğüne bağlı değildir.)

+0

Merhaba TaW, anser istemi için teşekkür ederiz. Sanırım, sorumu açıklığa kavuşturmalıyım. Davranışa \ slmult0'dan (mesafe) ihtiyacım var, ancak alan metin satırının altında olmalıdır. Ayrıca bağlantıdaki yazıya bir soru. Pt/twips içindeki tek satır aralığı nedir ("\ slN, satır aralığı N/240 * (tek satır aralığı)") – Chris2011931

+0

Çalışmak için birkaç bağlantı ekledim ve tırnak ekledim. Her zaman, aralığın sadece sizin ayarladığınız tek paragrafı etkilemesi beklerim, yani satırları arasındaki tüm boşluklar arasındaki boşluk. Önceden ayarladınız mı (\ pard'dan hemen sonra tavsiye edildiği gibi (veya paragrafın ardından paragrafı sıfırlamıyorsanız))? – TaW

İlgili konular