C# Can';不要让Pango sharp gravity attibute工作

C# Can';不要让Pango sharp gravity attibute工作,c#,mono,gtk#,C#,Mono,Gtk#,我无法获得重力属性来处理pango布局。我尝试过使用标记,但没有从标记解析器中得到任何错误或警告: l.SetMarkup ("<span gravity=\"east\" color=\"black\">" + text + "</span>"); 但两者都不垂直绘制文本。属性列表。更改有时也会使程序崩溃。我真的不确定我做错了什么,或者重力是否对Gtk有效 以下是所有代码的片段: Pango.Layout l = new Pango.Layout (PangoCont

我无法获得重力属性来处理pango布局。我尝试过使用标记,但没有从标记解析器中得到任何错误或警告:

l.SetMarkup ("<span gravity=\"east\" color=\"black\">" + text + "</span>");
但两者都不垂直绘制文本。属性列表。更改有时也会使程序崩溃。我真的不确定我做错了什么,或者重力是否对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 ();
Pango.Layout l=新的Pango.Layout(PangoContext);
l、 FontDescription=Pango.FontDescription.FromString(“Courier New 11”);
l、 SetMarkup(“+text+”);
GdkWindow.DrawLayout(Style.TextGC(StateType.Normal)),x,y,l;
l、 处置();
谢谢

编辑:


我在
FontDescription
下找到了Gravity属性,但它只会导致“找不到该字体…”这几行的错误

我的假设是Gravity绑定到您试图显示的文本。因此,如果是中国人,重力东方应该可以工作(或者在本例中默认启用)

如果要旋转布局,可以使用矩阵诱导旋转:

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.Layout l=新的Pango.Layout(PangoContext);
//恒等式是一个“无变换”矩阵。
var矩阵=Pango.matrix.Identity;
//90度的旋转。
矩阵旋转(90);
//将矩阵分配给Pango上下文。
l、 矩阵=矩阵;
l、 SetMarkup(@“你好,世界!”);
GdkWindow.DrawLayout(Style.TextGC(StateType.Normal)),50,50,l;

谢谢。这正是我想要的。我在Python的Gtk实现中看到了一些关于matrix的东西,但有时在它和C#的Gtk包装器之间有点难以理解。
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);