如何在 GTK# 中自动换行?
How to wordwrap in GTK#?
问题
我想在 GTK# 中的 window 上显示一些文本。文本长度未预先确定,需要自动换行。
要显示的示例测试
"呜----- -------------- ------------------ ---- ----------------------------------------------!” =15=]
预期结果
代码
static void Main(string[] args)
{
Application.Init();
Window window = new Window("helloworld");
window.Decorated = false; //Remove title bar.
window.SizeAllocate(new Gdk.Rectangle(new Gdk.Point(0, 0), new Gdk.Size(100, 100)));
var Black = new Gdk.RGBA
{
Alpha = 1,
Red = 0,
Green = 0,
Blue = 0
};
var White = new Gdk.RGBA
{
Alpha = 1,
Red = 1,
Green = 1,
Blue = 1
};
window.OverrideBackgroundColor(StateFlags.Normal, Black);
window.Show();
Label label1 = new Label("woo----- --------------- ------------------- ---------------------------------------------------!");
label1.OverrideColor(StateFlags.Normal, White);
label1.OverrideColor(StateFlags.Focused, White);
label1.OverrideColor(StateFlags.Active, White);
label1.MaxWidthChars = 20;
label1.Show();
window.Add(label1);
Application.Run();
}
结果
它会自动调整 window 的大小而不换行。
再来一枪
window.Resizable = false;
如果我添加这段代码...
另一个结果
它仍然会调整 window 的大小。无法理解Resizable 属性 的功能,如果它不起作用。
怎样才能得到预期的结果?
环境
- 点网核心 3.1 Windows/Linux
- GtkSharp 3.24.24.34
我找到了 Wrap 属性。
label1.Wrap = true;
问题
我想在 GTK# 中的 window 上显示一些文本。文本长度未预先确定,需要自动换行。
要显示的示例测试
"呜----- -------------- ------------------ ---- ----------------------------------------------!” =15=]
预期结果
代码
static void Main(string[] args)
{
Application.Init();
Window window = new Window("helloworld");
window.Decorated = false; //Remove title bar.
window.SizeAllocate(new Gdk.Rectangle(new Gdk.Point(0, 0), new Gdk.Size(100, 100)));
var Black = new Gdk.RGBA
{
Alpha = 1,
Red = 0,
Green = 0,
Blue = 0
};
var White = new Gdk.RGBA
{
Alpha = 1,
Red = 1,
Green = 1,
Blue = 1
};
window.OverrideBackgroundColor(StateFlags.Normal, Black);
window.Show();
Label label1 = new Label("woo----- --------------- ------------------- ---------------------------------------------------!");
label1.OverrideColor(StateFlags.Normal, White);
label1.OverrideColor(StateFlags.Focused, White);
label1.OverrideColor(StateFlags.Active, White);
label1.MaxWidthChars = 20;
label1.Show();
window.Add(label1);
Application.Run();
}
结果
它会自动调整 window 的大小而不换行。
再来一枪
window.Resizable = false;
如果我添加这段代码...
另一个结果
它仍然会调整 window 的大小。无法理解Resizable 属性 的功能,如果它不起作用。
怎样才能得到预期的结果?
环境
- 点网核心 3.1 Windows/Linux
- GtkSharp 3.24.24.34
我找到了 Wrap 属性。
label1.Wrap = true;