aardio 文档

aardio 范例: 在图片上添加文字水印

//文字水印
import fsys.dlg;
import gdip.bitmap;
import gdip.graphics;
import gdip.family;
import gdip.stringformat;
import win.ui;
/*DSG{{*/
var winform = win.form(text="在图片上添加文字水印";right=759;bottom=469)
winform.add(
button={cls="button";text="选择图片并添加水印";left=277;top=400;right=482;bottom=442;z=1}
)
/*}}*/

winform.button.oncommand = function(id,event){
    // 选择图片文件
    var path = fsys.dlg.open("图片文件|*.jpg;*.png;*.bmp||", "请选择要添加水印的图片");
    if(!path) return;

    // 加载图片
    var bmp = gdip.bitmap(path);
    if(!bmp) return winform.msgboxErr("无法加载图片");

    // 创建画布
    var graphics = gdip.graphics(bmp);

    // 设置抗锯齿效果
    graphics.textRenderingHint = 3/*_TextRenderingHintAntiAliasGridFit*/;

    // 设置文字内容和颜色
    var text = "aardio 水印设置文字内容和颜色";
    var brush = gdip.solidBrush(0x80FF0000); // 半透明白色

    // 设置文字对齐
    var strformat = gdip.stringformat();
    strformat.align = 0/*_GdipStringAlignmentNear*/;
    strformat.lineAlign = 0/*_GdipStringAlignmentNear*/;

    // 设置字体家族
    var family = gdip.family("微软雅黑");

    // 创建 10pt 大小字体,注意最后一个参数指定单位
    var font = family.createFont(10,0/*_FontStyleRegular*/,3/*_UnitPoint*/);;

    // 画布大小
    var rc = ::RECTF(0,0,bmp.width, bmp.height);

        // 计算文字在输出后的大小
    var rc = graphics.measureString(text, font,rc,strformat, brush)

        // 文字移动到右下角
    rc.x = bmp.width - rc.width;
    rc.y = bmp.height - rc.height 

    // 输出文字
    graphics.drawString(text, font,rc ,strformat, brush);

    // 保存结果 
    bmp.save("/水印.jpg");

    // 释放资源
    graphics.delete();
    bmp.dispose();

    winform.msgbox("水印添加成功!" );
}

winform.show();
win.loopMessage();

Markdown 格式