无法获得Pango-sharp引力工作

时间:2015-06-01 17:11:39

标签: c# mono gtk#

我无法使用重力属性来处理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属性,但它只会导致“找不到该字体......”的错误。

1 个答案:

答案 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);