aardio 制作 ico 图标

光庆 9月前 632


使用最新版的 paint 库和 customplus 库,请从我的更新程序,或本站下载。

体验 exe 见附件,可下载尝鲜。

制作了个简单的界面:

代码如下:

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio 制作ico图标 by 光庆";right=687;bottom=503)
winform.add(
add={cls="button";text="添加";left=528;top=8;right=672;bottom=48;z=2};
button={cls="button";text="生成";left=528;top=56;right=672;bottom=96;z=3};
plus={cls="plus";left=8;top=8;right=472;bottom=496;edge=1;notify=1;z=1};
scrollbar={cls="scrollbar";left=472;top=8;right=504;bottom=496;edge=1;z=4}
)
/*}}*/

import godking.paint
import godking.customPlus
var itemModel = {
    [1]={  	type="rect",  /* 类型:rect */
            rectf={x=5;y=5;width=128;height=128},  /* 矩形区域范围。负数表示距离项目右边或底边的距离。 */
            width=1,     /* 边框宽度。为0则无边框。  */
            color=0xFFDDDDEE,               /* 正常状态下,边框颜色 */
            click = true,
            round=10,
        },
    [2]={   type="img",  /* 类型:img */
            rectf={x=5;y=5;width=128;height=128}, 
            name="img",
       },
    [3]={   type="text",  /* 类型:text */
            rectf={x=5;y=138;width=128;height=20},  /*  文本范围。负数表示距离项目右边的距离。 */
            name="size",
            align=1,        /* 文本水平对齐方式。0、(近端)左对齐  1、居中  2、(远端)右对齐 */
            font={name="Tahoma",point=11,color=0xFFFF0000},          
        }
    }

var c = godking.customPlus(winform.plus,itemModel,itemList,{
  	itemWidth=138, 	/*项目最小宽度,为0时根据colnum自动计算,所以不能与colnum同时=0*/
 	itemHeight=158,	/*项目最小高度,为0时根据rownum自动计算,所以不能与rownum同时=0*/
})

c.onClick = function(itemIndex/*项目索引*/,elemIndex/*元素索引*/,elemID/*元素id*/,elemName/*元素name*/,pageIndex/*当前页项目索引*/,x/*鼠标X坐标*/,y/*鼠标Y坐标*/,disabled/*项目是否禁用*/,itemRect/*项目区域*/,elemRect/*元素区域*/){
    if win.msgboxTest("确定要删除该项吗?") { c.delItem(itemIndex); c.bindScrollbar(winform.scrollbar); c.update(); }
}

winform.add.oncommand = function(id,event){
	import fsys.dlg
	var fname = fsys.dlg.open("*.png|*.png|*.jpg|*.jpg")
	if fname {
		var p = godking.paint.fromBitmap(fname);
		var w,h = p.width,p.height;
		p.close();
		if w>128 or h>128 return win.msgboxErr("尺寸大于128,不满足要求!"); 
		c.addItem({img=fname,size= w+"*"+h});
		c.bindScrollbar(winform.scrollbar);
		c.update();
	}
}

winform.button.oncommand = function(id,event){
	var ico = godking.paint.icon()
	for(i=1;#c.itemList;1){
		ico.addImage(c.itemList[i].img);
	}
	import fsys.dlg
	var fname = fsys.dlg.save("*.ico|*.ico");
	if fname {
		if ..string.save(fname,ico.getIcon()) win.msgbox("保存完毕")
		else win.msgbox("保存失败")
	}
}

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


上传的附件:
最新回复 (4)
  • tanzh 9月前
    0 2
    此楼层已删除
  • tanzh 9月前
    0 3
    学习了
  • 光庆 9月前
    0 4
    tanzh 学习了,大一点的图,能否先处理一下,godking.paint.fromBitmap(fname).getThumbnail(128,128);
    可以,我只是做了个简单的框架,可以自己添加很多内容。只要用paint库处理一下,就可以效果满满的。
  • 0 5
    666
返回