C#

2011-09-21 17 views
5

kullanarak DrawString kullanarak metni yaslama Bir System.Drawing.Graphics nesnesinde metin çiziyorum. Metin dizgisi ile DrawString yöntemini kullanıyorum, Font, Brush, sınırlayıcı bir RectangleF ve bağımsız değişken olarak bir StringFormat.C#

StringFormat içine bakınca, bunu Alignment mülkiyet Near için, Center veya Far var ayarlayabilirsiniz saptadık. Ancak, bunu Justified'ye ayarlamanın bir yolunu bulamadım. Bunu nasıl başarabilirim?

Yardımlarınız için teşekkür ederiz!

cevap

1

Bunu yapmak için yerleşik bir yol yoktur. Bazı alternatif çözüm bu iş parçacığı üzerinde belirtilmiştir: Onlar SelectionAlignment özelliği (this page for how bakınız) geçersiz kılma ve Justify düzeye getirmek, bir geçersiz RichTextBox kullanmanızı öneririz

http://social.msdn.microsoft.com/Forums/zh/winforms/thread/aebc7ac3-4732-4175-a95e-623fda65140e

. geçersiz kılma

bağırsaklar bu PInvoke çağrısı etrafında döner: (Sana metinden daha fazla çizim varsayılmaktadır beri) bu mevcut modele entegre edilebilir ne kadar iyi emin değil

PARAFORMAT fmt = new PARAFORMAT(); 
fmt.cbSize = Marshal.SizeOf(fmt); 
fmt.dwMask = PFM_ALIGNMENT; 
fmt.wAlignment = (short)value; 

SendMessage(new HandleRef(this, Handle), // "this" is the RichTextBox 
    EM_SETPARAFORMAT, 
    SCF_SELECTION, ref fmt); 

, ama olabilir tek seçeneğin ol.

float extra_space = rect.Width - total_width; // where total_width is the sum of all measured width for each word 
int num_spaces = words.Length - 1; // where words is the array of all words in a line 
if (words.Length > 1) extra_space /= num_spaces; // now extra_space has width (in px) for each space between words 

gerisi: Eğer tüm bir paragraftaki belirli bir genişliğe bildiğinizde her ayrı bir satırda metin haklı -