moonbit 显示图片

moonbit 显示图片

克隆项目
git clone liyuansi2222/helloworld-moonbit-gui - AtomGit
cd helloworld-moonbit-gui
moon add NoahLiu/native-gui
这句是加载 NoahLiu/native-gui,显示图片用。
liyuansi@gentoo ~/helloworld-moonbit-gui $ moon build --release
moon run cmd/main/
出结果了



程序如下:
fn image_widget(path : String) → @widget.Node {
@widget.node_of_new(fn(w : @widget.Widget) → @widget.Widget {

w.node.set_width(@yoga.fixed(420.0))
w.node.set_height(@yoga.fixed(420.0))
w.on_draw = Some(fn(_w : @widget.Widget, p : @render.Painter, _r : @base.Rect) -> Unit {
  // 背景
  p.set_fill_color(@theme.theme_bg_panel())
  p.fill_rect(0.0, 0.0,420.0, 420.0)

  // 加载图片
  let img = @render.Image::new_from_file(path)
  if img.is_empty() {
    // 加载失败,画个占位框
    p.set_stroke_color(@theme.theme_border())
    p.set_line_width(2.0)
    p.stroke_rect(20.0, 20.0, 380.0, 420.0)
  } else {
    // 画图片,指定位置和尺寸
    p.draw_image(img, 20.0, 20.0, 380.0, 420.0)
  }
})
w

})
}

fn main {
let path = “assets/logo.png”

match @ui.mount_window(
[
@ui.col(
[
@ui.text(“显示图片示例”, font_size=18.0),

关键是这句:
let img = @render.Image::new_from_file(path)
let path = “assets/logo.png”