改进视觉效果

上个程序只实现了简单的文本显示,接下来将介绍如何调整文字的位置、大小、颜色。

  1. #include <LCUI_Build.h>
  2. #include <LCUI/LCUI.h>
  3. #include <LCUI/gui/widget.h>
  4. #include <LCUI/gui/widget/textview.h>
  5. int main( int argc, char **argv )
  6. {
  7. LCUI_Widget root, txt;
  8. LCUI_Color bdcolor = RGB( 0, 0, 0 );
  9. LCUI_Color bgcolor = RGB( 245, 245, 245 );
  10. LCUI_Init();
  11. root = LCUIWidget_GetRoot();
  12. txt = LCUIWidget_New( "textview" );
  13. Widget_SetMargin( txt, 25, 0, 0, 25 );
  14. Widget_SetPadding( txt, 25, 0, 0, 0 );
  15. Widget_SetBorder( txt, 1, SV_SOLID, bdcolor );
  16. Widget_SetStyle( txt, key_background_color, bgcolor, color );
  17. TextView_SetText( txt, "[size=18px]Hello, World![/size]" );
  18. TextView_SetTextAlign( txt, SV_CENTER );
  19. Widget_Resize( txt, 200, 100 );
  20. Widget_Append( root, txt );
  21. return LCUI_Main();
  22. }

在原有的代码上补充了几行代码,运行效果如下:

运行效果

为了缩短后面代码的宽度,预先定义了 bdcolor 和 bgcolor 两个变量,分别保存边框色和背景色。

在创建好部件后,调用 Widget_SetMargin()Widget_SetPadding()Widget_SetBorder() 这三个函数分别设置 txt 部件的外间距、内间距和边框,内间距和外间距有上、右、下、左这四个,Widget_SetMargin()Widget_SetPadding() 函数的后面四个参数也是对应这个顺序的。Widget_SetBorder() 函数的后三个参数分别表示边框的大小、风格、颜色,目前边框风格只支持实线(solid),与之对应的值为 SV_SOLID。

之后调用 WidgetSetStyle() 函数设置 txt 部件的背景色。Widget_SetStyle() 是一个宏,主要用于简化部件样式表的修改操作,它的第二个参数是样式属性的编号,这些编号也就是样式属性在样式表中的位置,为方便记忆和识别,已经将它们定义成以 key 开头的全小写命名的枚举,你可以在 gui/css_library.h 中找到它们的定义。第三个和第四个参数分别是属性值和属性值的类型,这里就不做过多的说明了。

在为 txt 部件设置的文本中包含了 [size=18px],它表示的是将字体的大小设置为 18 像素。TextView 部件默认支持样式标签,但当前支持的样式标签只有 [size][color],你可以直接在文本内使用它们来设置简单的样式。

TextView_SetTextAlign() 函数可以为 TextView 部件设置文本对齐方式,支持的对齐方式有三种:靠左(SV_LEFT)、居中(SV_CENTER)、靠右(SV_RIGHT),SV 是样式值(Style Value)的缩写。

Widget_Resize() 函数用于调整部件的尺寸,这里将部件的宽高分别为 200 像素和 100 像素。

看了上面的代码你可能会想:为什么修改部件的坐标需要设置外间距?不是直接设置 xy 坐标就可以了吗?

LCUI 有提供 Widget_Move() 函数,用于修改部件的坐标,但对于默认定位方式的部件来说,这个函数并没有任何效果。LCUI 的布局方式和浏览器中的网页布局类似,部件在默认的定位方式下,能够影响坐标的只有外间距,除非更改该部件的定位方式,具体内容在后面的章节中会介绍。

原文: https://docs.lcui.lc-soft.io/zh-cn/getting_started/step2.html