无法使 Pango-sharp 重力属性起作用
Can't get Pango-sharp gravity attibute to work
我无法使重力属性与 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 属性,但它只会导致类似“找不到该字体....”的错误
我的假设是重力绑定到您要显示的文本。因此,如果是中文,gravity east 应该可以工作(或者在这种情况下可能默认启用)。
如果要旋转布局,可以用矩阵引起旋转:
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);
我无法使重力属性与 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 属性,但它只会导致类似“找不到该字体....”的错误
我的假设是重力绑定到您要显示的文本。因此,如果是中文,gravity east 应该可以工作(或者在这种情况下可能默认启用)。
如果要旋转布局,可以用矩阵引起旋转:
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);