# aardio 范例: PPTX 视觉与动画 · 6 页原生演示



```aardio
import win.ui;
/*DSG{{*/
var winform=win.form(text="PPTX 视觉与动画 · 6 页原生演示";right=719;bottom=409;bgcolor=0xF8F5F1)
winform.add(
 title={cls="static";text="让演示，不止于能生成。";left=28;top=27;right=689;bottom=71;font=LOGFONT(h=-25;weight=700);color=0x3B2414;transparent=1;z=1};
 generate={cls="button";text="生成 6 页演示";left=28;top=91;right=236;bottom=136;z=2};
 open={cls="button";text="打开 PPTX";left=253;top=91;right=461;bottom=136;disabled=1;z=3};
 status={cls="edit";text="渐变 / 半透明 / 图片适配 / 段落排版 / 样式表格 / 分步动画";left=28;top=157;right=690;bottom=378;anchors={left=1;top=1;right=1;bottom=1};multiline=1;readonly=1;edge=1;z=4}
)
/*}}*/
var output=io.fullpath("/native-design-demo.pptx");
var specCode=$"~/examples/File/OpenXML/.pptx-design/slides.aardio";
winform.generate.oncommand=function(){
 owner.disabled=true;
 winform.status.text="正在原生生成，不启动 Office/WPS……";
 thread.invoke(function(winform,output,specCode){
  import fsys.openXml.pptx.builder;
  var spec=loadcodex(specCode);
  var path,err=fsys.openXml.pptx.builder.write(output,spec.slides,spec.options);
  if(path){
   winform.status.text='生成成功：\r\n' ++ path ++ '\r\n\r\n6 页演示，原生文字、形状和表格可编辑。\r\n请进入放映：封面自动入场，第 2、3、6 页按提示点击。\r\n生成不需要 Office；播放与导出请使用 PowerPoint/WPS。\r\n默认不覆盖，重复生成请先移走已有文件。';
   winform.open.disabled=false;
  }
  else winform.status.text="生成失败：" ++ tostring(err);
  winform.generate.disabled=false;
 },winform,output,specCode);
}
winform.open.oncommand=function(){raw.execute(output);}
winform.show();
win.loopMessage();

```

