我想寫一個函數,需要繪製一個字符串的圖像。圖像有1-5個文本框,每個文本框都有一個x,y,寬度和高度。這些細節是在我解析的XML文件中定義的,所以我可以訪問每個盒子的這些細節。Graphics.DrawString到多個矩形
我的問題是我是否可以使用graphics.DrawString(或類似的)方法很容易地做到這一點。下面的示例函數將創建一個具有指定的x,y,寬度,高度的矩形,然後在其中繪製一個字符串。如果字符串不適合,它會截斷。
public void DrawStringRectangleFormat(Graphics g)
{
// Create string to draw.
String drawString = "Sample Text is too long to fit into this tiny lil rectangle area right here";
// Create font and brush.
Font drawFont = new Font("Arial", 16);
SolidBrush drawBrush = new SolidBrush(Color.Black);
// Create rectangle for drawing.
float x = 150.0F;
float y = 150.0F;
float width = 200.0F;
float height = 50.0F;
RectangleF drawRect = new RectangleF(x, y, width, height);
// Set format of string.
StringFormat drawFormat = new StringFormat();
drawFormat.Alignment = StringAlignment.Center;
// Draw string to screen.
g.DrawString(drawString, drawFont, drawBrush, drawRect, drawFormat);
}
我想,而不是這是什麼,是不是截斷,它會停在最後裝配字,並進入下一個矩形(文本框)。這樣我可以使用所有可用的文本框。
有沒有一種方法可以做到這一點?否則,我將需要實現我自己的drawString方法。
我想你會需要分割串入的話,請撥打['GraphicsMeasureString()'](https://msdn.microsoft.com/en-us/library/6xe5hazb %28v = vs.110%29.aspx?f = 255&MSPPError = -2147217396),並做到這一點很難。不*太*難,真的。給定一個元組列表{word,wordRect}',這是一個適合文本的簡單循環。 –
我想你需要看'Graphics.MeasureCharacterRanges'來看看哪些單詞需要被截斷。該函數可用於計算字符串中字符組的字符串座標(例如每個字)。如果您嘗試對'Graphics.MeasureString'使用多個調用,那麼恐怕由於字距(kerning)而導致結果不夠精確。 – RogerN