我无法使用重力属性来处理pango布局。我已尝试使用标记,但我没有从标记解析器中收到任何错误或警告:
l.SetMarkup ("<span gravity=\"east\" color=\"black\">" + text + "</span>");
并将属性插入并更改为布局AttrList:
l.Attributes.Insert (new Pango.AttrGravity (Pango.Gravity.East));
但不会垂直绘制文字。 AttrList.Change偶尔也会崩溃程序。我不确定我做错了什么,或者引力是否适用于Gtk#?
以下是所有代码的片段:
Pango.Layout l = new Pango.Layout (PangoContext);
l.FontDescription = Pango.FontDescription.FromString ("Courier New 11");
l.SetMarkup ("<span gravity=\"east\" color=\"black\">" + text + "</span>");
GdkWindow.DrawLayout (Style.TextGC (StateType.Normal), x, y, l);
l.Dispose ();
谢谢
编辑:
我在FontDescription
下找到了一个Gravity属性,但它只会导致“找不到该字体......”的错误。
答案 0 :(得分:1)
我的假设是重力与您试图显示的文本绑定。因此,如果它是中文,那么引力东应该起作用(或者在这种情况下可能默认启用)。
如果要旋转布局,可以使用矩阵进行旋转:
Pango.Layout l = new Pango.Layout (PangoContext);
// Matrix.Identity is a 'no transformation' matrix.
var matrix = Pango.Matrix.Identity;
// A rotation of 90 degrees.
matrix.Rotate(90);
// Assign the matrix to the Pango context.
l.Context.Matrix = matrix;
l.SetMarkup(@"<span color=""black"">Hello, world!</span>");
GdkWindow.DrawLayout(Style.TextGC(StateType.Normal), 50, 50, l);