PMEdit一个富文本框可以编辑文本、并可以显示GIF动画

发布时间:2013-04-14 发布来源:

  

护士必必要有同情心和一双愿意工作的手。
一、在开端之前起首吐槽一下,本人是一个自力开辟者,在中国自力开辟者就代表一个斗劲苦逼的行业,希罕是对底层器材进行开辟者,尤其本人研究标的目标是编译器、解析器根蒂根基上没有公司要,所以出来做个自力开辟者。作为自力开辟者半年来独一的感触感染就是挺孤单,好几个月没跟人说过话了,也许过几年不会措辞了也不必然。

金钱是一天的财富,劳动是用不完的财富。 底本想找一小我出来一路进行合股开辟的,然则很多年来的寻寻觅觅却发明没有一个志同道合的,解析发明应当是中国的底层精力相差太远,可能跟崇奉有关系。底层精力相差越多不合也越多,所以超大很难去完成,不合多野心也多所以内乱很轻易产生。还有一种怠惰思惟,像我们常见的望子成龙、望女成凤思惟,归根结底就是一种怠惰思惟,怠惰到本身期望的好生活生计、好地位却让后代去帮他们来实现,不敢去触碰和测验测验在本身常识之外的高等范畴,心里却超等神驰,然后喜好在别人成功了站在他们的后面或上方;所以碰到望子成龙、望女成凤思惟的人见一个批一个。

还有一个就是金庸精力,在理性的意因子解析中金庸精力应当是被批驳的;我称之为机会精力,老是在碰到一本绝世武功或一个绝世高手后获得真传然后一会儿成为了绝世高手,然后不知不觉去夸耀,吸引了浩繁女猪脚,选择最合适最好的一个然后过上神仙般的生活生计。这种精力很轻易成长成为一种机会主义,凡事靠命运,发明机会就往空子里钻,不管什么道德,不管什么精力;凡事寻求一劳永逸,狠狠赚他一笔然后就安适、夸耀与浪费。从根源解析机会精力也是一种怠惰思惟。其实我感觉生活生计就应当是天天都是新的,不一样、对峙信赖、络续的挑衅才是生活生计的本质。像什么主义、大同社会等幻想生活生计其实就是变质的,什么都很美好、什么都很安静冷静僻静,那就是一潭死水慢慢就会发臭;有风有雨、变幻莫测才孕育了世间万物。像欧洲的高福利绑缚了他们的思维才能,他们永远都不成能像18、19世纪充斥冒险家时代那样风光了。

在本人的开产生活生计中发明中法律国法公法度员的程度是不足的,大项目组人都只会居心在本身模块的几个小分支下,同时呈现4-5中景象根蒂根基还能能敷衍,当景象多到7-8个根蒂根基就惊慌失措了,当景象具有10几个时达到极限就无法敷衍了,居然用一种随机的办法而不是体系的办法去向理惩罚这种鸿沟题目,然后就在栈域效应下浪费时候,今天处理惩罚这两端道,明天又处理惩罚那两端道,后天又转回头,像迷宫永远找不到前程;最首要的还是立场题目,碰到题目了一点不焦急放工还是掐秒放工该怎么放松还是怎么放松,也没有一种降服进化的思惟。

也曾经碰到一种人A是A,B也是A,思维永远不克不及解析和记忆成两种景象,所以思维栈低于5是不合适于作为法度员的,碰到就赶紧让他回家生孩子去;代码界我认为聪慧的人应当具有的一些因子是:1、思维能灵活跳跃 2、可以或许区分细微的细节 3、可以或许快速记忆 4、降服鸿沟可以或许总体去看工作 5、可以或许很快将已有作为本身的常识根蒂根基 6、有灵敏的发明碰撞触觉 7、有本身独特的崇奉及解析办法 8、有必然的完美的思惟 9、不一样 10、耐烦勤奋果断

本文本框在3个月无人交换的苦闷开辟下完成,PMEdit核心代码曾经进行了三次重构,终于获得一个斗劲稳定一点的版本,核心代码也从一万多行砍到5000多行,代码削减错杂度进步,很多景象本人都没有时候去测试,所以发出来让大师辅佐测试、交换一下,也进步一下代码程度。若是有什么题目可以发送邮件到feirench@gmail.com进行交换,因为没有拉网线所以可能不会很及时答复滴。

最后说一下本文本框的设计:

1、文本框代码量小只有5000多行,全部是核心代码
2、文本框的设计是为了给PMGrid表格作为文本输入用的,PMGrid是一个秀丽的类似于Excel的富文本表格,因为此表格正在开辟中临时就不开源了,样例可以看看源代码中的PMGrid.exe,若是有须要也可以给我发邮件feirench@gmail.com。
3、文本框内存占用小,除了作为靠山双缓存的几个bitmap,就只是几个int数据,所以内存还是很宁神的
4、文本框通篇应用了json作为数据存储,Json具有强大的灵活性,若是是界面开辟,将本文本框作为根蒂根基输入要素,都不须要数据布局了一个json搞定,将法度作为一个大的json,下面挂页面json,页面下挂多个文本框json就OK了。
5、本文本框的毛病就是没有做增量解析,导致数据量过大的时辰会会影响编辑结果,然则5000行文本的编辑是完全可以搞定的,毕竟成果作为表格的输入数据量不会很大的,若是要实现更大数量级的编辑花费的工夫就须要成倍了,对于一个自力开辟者来说可能就得不偿失了!
6、因为是全部加载到内存中,若是太多也会占用很大的内存
7、文本框未支撑国际化,如今仅设计为中文景象中应用,版本二会进行改进
8、很大的特点就是支撑在explore中复制文件然后粘贴到文本框中,支撑两种类型文件的粘贴:纯文本、,支撑多选
9、本文本框的Json是本人本身设计的扩大json类型TJSON,可以保存二进制数据,可以添加注释。它的效力应当还是不错的,易用性方面也很是不错,解析和读写参考了CJSON的源代码。开源的所有JSON解析源码中,机能最高的就应当是CJSON了,然则易用性方面也是最差的,可能300行的代码用CJSON就须要写上400行代码,有得也有落空。TJSON的数据量斗劲小,sizeof(TJSON)==40,并且具有遍历迭代器TJSONIterator、TJSONConstIterator,易用性就跟vector等容器一样;内部实现直接用的是map和vector,机能瓶颈也就是map、vector的机能瓶颈。

二、PMEdit是一个在windows下的富文本框,它能显示文字、编辑文字、显示、改变显示大小,具有行号、行图标、改变字体属性等特点。
PMEdit完成从底层开辟,没有效任何windows控件,代码直接基于最根蒂根基GUI、windows消息,很轻易移植到OpenGL或其他平台下。
源代码可以到http://www.natframe.com去。
希罕感激Davide Pizzolato大大(主页 http://www.xdp.it/)的CxImage让的开辟变得很是简单。本代码开源免费,licensed等同zlib的license,任何人都可以随便批改和公布此中代码。

三、样例显示
A、文本编辑


B、显示


C、GIF动画显现


D、富文本显示


E、改变靠山


F、表格的样例

四、布局申明
1、编辑框设备property.json,包含6个项目组
A、LAFERS,保存的是绘制迁移转变条的lafer json数据
B、MAX_TEXT_FILE,保存的是当文本文件复制时能粘贴到本文本框的最大大小,默认是14000000字节
C、TEXT_EXTS,保存文本文件复制时能粘贴到本文本框的文本文件类型
D、PICTURE_EXTS,保存文本文件复制时能粘贴到本文本框的文件类型,支撑的类型可以参照下面" Pictures"中存储的申明
E、SYSTEM_FONT,保存文本框体系字体,字体申明:
[
"宋体",//字体名称:face name
12,//字体大小
1,//粗体:0、1
0,//倾斜:0、1
0,//删除线:0、1
1,//下划线
8421504//字体色彩=RGB(R,G,B)
]

F、EDIT_ATTRIBUTE,保存文本框的属性设备:
[
0,//1、编辑框内容的类型 0通俗编辑框,4显示行号,8具有行图标
0,//2、是否主动换行,0是主动换行(主动换行就不再具有程度迁移转变条),1不主动换行
0,//3、是否具有竖直迁移转变条,0是没有,1是有
0,//4、是否具有程度迁移转变条,0是没有,1是有
0,//5、是否可编辑
16777215,//6、文本框的靠山色彩
15000804,//7、行号靠山色彩
[
"宋体",//字体名称:face name
12,//字体大小
1,//粗体
0,//倾斜
0,//删除线
1,//下划线
8421504//字体色彩
],//8、行号字体
12632256,//选择字体的靠山色彩
[3,2,2,3],//margin,左上右下
0,//可视的X
0,//可视的Y
1, //可视的行号
16, //行图标的宽度和高度 
9 /*文本框的对齐体式格式,临时只实现了top_left的对齐, 
TF_VTOP =0 x0001,
TF_VCENTER =0 x0002,
TF_VBOTTOM =0 x0004,
TF_HLEFT =0 x0008,
TF_HCENTER =0 x0010,
TF_HRIGHT =0 x0020*/
0,//字体程度间距
3,//字体行间距
168,//竖直迁移转变速度
39//程度迁移转变速度
]
2、保存的数据布局申明:
文本框应用JSON保存数据,布局为
{
" Pictures"://保存的文件内容
{
"C288F22375B58757C9B15A2BFB5FEF6A": //的名称,用内容进行MD5策画获得,防止数据反复
[
5, /*的CxImage类型,包含:
CXIMAGE_FORMAT_BMP = 1,
CXIMAGE_FORMAT_GIF = 2,
CXIMAGE_FORMAT_JPG = 3,
CXIMAGE_FORMAT_PNG = 4,
CXIMAGE_FORMAT_ICO = 5,
CXIMAGE_FORMAT_TIF = 6,
CXIMAGE_FORMAT_TGA = 7,
CXIMAGE_FORMAT_PCX = 8,
CXIMAGE_FORMAT_WBMP = 9,
CXIMAGE_FORMAT_WMF = 10,
CXIMAGE_FORMAT_JP2 = 11,
CXIMAGE_FORMAT_JPC = 12,
CXIMAGE_FORMAT_PGX = 13,
CXIMAGE_FORMAT_PNM = 14,
CXIMAGE_FORMAT_RAS = 15,
CXIMAGE_FORMAT_JBG = 16,
CXIMAGE_FORMAT_MNG = 17,
CXIMAGE_FORMAT_SKA = 18,
CXIMAGE_FORMAT_RAW = 19,
CXIMAGE_FORMAT_PSD = 20,*/
B9062.... //的二进制内容
],
"3E550FEED5C6F1EBE0077903810DF743": [2, B186690....]
},
"EDIT_DATA"://保存文本框的数据内容
[
["fixedsys", 8, 0, 0, 0, 0, 10485920], 
"//***************************************", ["C288F22375B58757C9B15A2BFB5FEF6A"], " ", 
["C288F22375B58757C9B15A2BFB5FEF6A"], ["3E550FEED5C6F1EBE0077903810DF743", 247, 170], " ", 
"//***************************************", ["C288F22375B58757C9B15A2BFB5FEF6A"]
]
/*EDIT_DATA申明,包含四种类型数据:
1、数组["fixedsys", 8, 0, 0, 0, 0, 10485920]是内容的字体,可以设置厥后面文本的字体色彩,直到碰到别的的字体,也可所以零丁的数字10485920默示色彩改变
2、字符串"//***************************************"是文本内容
3、数组["C288F22375B58757C9B15A2BFB5FEF6A"]是行图标
4、数组["3E550FEED5C6F1EBE0077903810DF743", 247, 170]是内容显示
*/
}

显示成果为:

3、功能申明
A、显示文字
B、字体改变
C、显示包含GIF动画
D、显示行号
E、显示行图标
F、主动换行
G、文本选择
H、文本删除
I、文本添加
J、文本调换
K、大小显示改变
L、剪贴、粘贴文本
M、剪贴、粘贴,可以粘贴METAFILE成
O、光标移动,移动行首、行尾、上、下、左、右
P、双击文本选择
Q、移动光标选择
R、移动到开首
S、移动到末尾
T、往前、往后删除雷同文本
U、高低翻页
V、在行号区域进行行选择
W、内容迁移转变,高低(鼠标滚轮),阁下(按住shift+鼠标滚轮),迁移转变条
X、转跳器,在两迁移转变条夹角处,点击可以转跳响应区域,按住左键移动鼠标可以实现连气儿浏览
Y、撤销
Z、重做

五、迁移转变条申明:
迁移转变条的式样是由本人设计的lafer文法申明生成,主如果对UI界面实体分成一个个的组合帧,在生成UI控件实体界面时调用响应的帧进行显示,对UI界面具有斗劲的扩大性
1、ENTITY是最外层的一个完全的实体对象,比如表非分希罕边框、竖直迁移转变条、体系按钮等,后面跟着的是名字
2、FRAME的是实体对象内此中一个绘制帧,像一些有动画结果的实体,后面跟着的是名字
3、Line代表画线的操纵对象,内部操纵对象如下面注释中的9种
4、Fill代表填充的操纵对象,内部操纵对象如下面注释中的9种
5、RECT默示地位局限
6、注释,文法和C++一样两种:A、行注释 B、多行注释

lafer应用体式格式为:
class PMLaferLexer
{
public:
TJSON *CreateLaferJson (const string &laferdata); //从lafer代码转化成JSON内存数据
string CreateLaferCode (TJSON &laferJson); //将内存lafer的json数据转化成lafer字符串
};
class ScreenGDI
{
public:
PMVoid DrawLaferFrame (TJSON &laferJson,const IntRect &laferRect,const string &name); //将lafer json数据按名称进行绘制到屏幕,laferJson为Entity实体json,name为FRAME帧名称
PMPicture* CreateLaferPicture(const IntSize &pictureSize,TJSON &laferJson,const string &name);//创建用来绘制lafer内容的,laferJson为Entity实体json,name为FRAME帧名称
};
//********************************************************************************
//文件:lafer文法 <by feiren> 2012-11-22 12:39
//申明:
// 1、点用法: POINT:宽度,色彩(R,G,B),坐标(x,y); 例如:POINT:1,(166,166,166),(0,0,-1,0);
// 2、线用法: LINE:宽度,色彩(R,G,B),坐标(x,y,x1,y1); 
// 3、折线用法: POLYLINE:宽度,色彩(R,G,B),坐标(x,y,x1,y1,x2,y2,...); 
// 4、三角形用法: TRIANGLE:宽度,色彩(R,G,B),填充色彩(R,G,B),坐标(x,y,x1,y1,x2,y2); 
// 5、矩形用法: RECTANGLE:宽度,色彩(R,G,B),填充色彩(R,G,B),坐标(x,y,x1,y1); 
// 6、渐变色矩形用法:SMOOTINGRECT:标的目标(0或-0),填充色彩1(R,G,B),填充色彩2(R,G,B),坐标(x,y,x1,y1); 
// 7、多边形用法: POLYGON:宽度,色彩(R,G,B),填充色彩(R,G,B),坐标(x,y,x1,y1,x2,y2,...); 
// 8、椭圆用法: ELLIPSE:宽度,色彩(R,G,B),填充色彩(R,G,B),坐标(x,y,x1,y1); 
// 9、扇形用法: PIE:宽度,色彩(R,G,B),填充色彩(R,G,B),坐标(x,y,x1,y1,xr1,yr1,xr2,yr2); 
// 宽度申明:0为不绘制线条,0~1为遵守宽度比例策画宽度,-1~0为按控件高度比例绘制宽度,其余为实际宽度
// 色彩申明:R、G、B在[0~255]之间,若是为-0为不绘制色彩
// 坐标申明:x——0为x原点,-0为x右边原点,(0~1)为左边开端的宽度比例坐标,(-1~0)为右边开端的宽度比例坐标,其余为实际坐标
// y——0为y原点,-0为y下边原点,(0~1)为上边开端的宽度比例坐标,(-1~0)为下边开端的宽度比例坐标,其余为实际坐标
//********************************************************************************

//********************************************************************************
//文件:lafer文法 <by feiren>  2012-11-22 12:39
//申明:
//  1、点用法:     POINT:宽度,色彩(R,G,B),坐标(x,y);  例如:POINT:1,(166,166,166),(0,0,-1,0);
//  2、线用法:     LINE:宽度,色彩(R,G,B),坐标(x,y,x1,y1);
//  3、折线用法:   POLYLINE:宽度,色彩(R,G,B),坐标(x,y,x1,y1,x2,y2,...);
//  4、三角形用法: TRIANGLE:宽度,色彩(R,G,B),填充色彩(R,G,B),坐标(x,y,x1,y1,x2,y2);
//  5、矩形用法:   RECTANGLE:宽度,色彩(R,G,B),填充色彩(R,G,B),坐标(x,y,x1,y1);
//  6、渐变色矩形用法:SMOOTINGRECT:标的目标(0或-0),填充色彩1(R,G,B),填充色彩2(R,G,B),坐标(x,y,x1,y1);
//  7、多边形用法: POLYGON:宽度,色彩(R,G,B),填充色彩(R,G,B),坐标(x,y,x1,y1,x2,y2,...);
//  8、椭圆用法:   ELLIPSE:宽度,色彩(R,G,B),填充色彩(R,G,B),坐标(x,y,x1,y1);
//  9、扇形用法:   PIE:宽度,色彩(R,G,B),填充色彩(R,G,B),坐标(x,y,x1,y1,xr1,yr1,xr2,yr2);
//        宽度申明:0为不绘制线条,0~1为遵守宽度比例策画宽度,-1~0为按控件高度比例绘制宽度,其余为实际宽度
//  色彩申明:R、G、B在[0~255]之间,若是为-0为不绘制色彩
//  坐标申明:x——0为x原点,-0为x右边原点,(0~1)为左边开端的宽度比例坐标,(-1~0)为右边开端的宽度比例坐标,其余为实际坐标
//            y——0为y原点,-0为y下边原点,(0~1)为上边开端的宽度比例坐标,(-1~0)为下边开端的宽度比例坐标,其余为实际坐标
//********************************************************************************
//一、表格边框
ENTITY GridFrame
{//内容的大小RECT(2,2,2,2);//1、第一帧FRAME Default{Line{LINE:1,(166,166,166),(0,0,-1,0);LINE:1,(166,166,166),(0,0,0,-1);LINE:1,(106,106,106),(1,1,-2,1);LINE:1,(106,106,106),(1,1,1,-2);LINE:1,(241,239,226),(1,-1,-1,-1);LINE:1,(241,239,226),(-1,1,-1,-1);LINE:1,(255,255,255),(0,-0,-0,-0);LINE:1,(255,255,255),(-0,0,-0,-0);                        }                }
}//二、体系按钮式样
ENTITY GridSystemButton
{//1、第一帧FRAME Default{Line{LINE:1,(158,182,206),(0,0,-0,0);LINE:1,(158,182,206),(-0,0,-0,-0);LINE:1,(158,182,206),(-0,-0,0,-0);LINE:1,(158,182,206),(0,-0,0,0);}        Fill{LINE:1,(213,228,242),(1,1,-1,1);LINE:1,(213,228,242),(1,1,1,-1);LINE:1,(176,207,247),(1,-1,-1,-1);LINE:1,(176,207,247),(-1,1,-1,-1);RECTANGLE:0,(0,0,0),(169,196,233),(2,2,-2,-2);TRIANGLE:0,(0,0,0),(224,227,233),(-2/15,1/4,-2/15,-1/5,3/5,-1/5);}}        FRAME DefaultEnter{Line{LINE:1,(158,182,206),(0,0,-0,0);LINE:1,(158,182,206),(-0,0,-0,-0);LINE:1,(158,182,206),(-0,-0,0,-0);LINE:1,(158,182,206),(0,-0,0,0);}        Fill{LINE:1,(213,228,242),(1,1,-1,1);LINE:1,(213,228,242),(1,1,1,-1);LINE:1,(176,207,247),(1,-1,-1,-1);LINE:1,(176,207,247),(-1,1,-1,-1);RECTANGLE:0,(0,0,0),(140,161,182),(2,2,-2,-2);TRIANGLE:0,(0,0,0),(219,223,230),(-2/15,1/4,-2/15,-1/5,3/5,-1/5);}}//2、第二帧FRAME Selected{Line{LINE:1,(158,182,206),(0,0,-0,0);LINE:1,(158,182,206),(0,-0,0,0);LINE:1,(255,255,255),(-0,0,-0,-0);LINE:1,(255,255,255),(-0,-0,0,-0);                        }        Fill{LINE:1,(213,228,242),(1,1,-1,1);LINE:1,(213,228,242),(1,1,1,-1);LINE:1,(176,207,247),(1,-1,-1,-1);LINE:1,(176,207,247),(-1,1,-1,-1);RECTANGLE:0,(0,0,0),(133,153,173),(2,2,-2,-2);TRIANGLE:0,(0,0,0),(224,227,233),(-2/15,1/4,-2/15,-1/5,3/5,-1/5);}                }        //2、第二帧FRAME SelectedEnter{Line{LINE:1,(158,182,206),(0,0,-0,0);LINE:1,(158,182,206),(0,-0,0,0);LINE:1,(255,255,255),(-0,0,-0,-0);LINE:1,(255,255,255),(-0,-0,0,-0);                        }        Fill{LINE:1,(213,228,242),(1,1,-1,1);LINE:1,(213,228,242),(1,1,1,-1);LINE:1,(176,207,247),(1,-1,-1,-1);LINE:1,(176,207,247),(-1,1,-1,-1);RECTANGLE:0,(0,0,0),(140,161,182),(2,2,-2,-2);TRIANGLE:0,(0,0,0),(215,219,227),(-2/15,1/4,-2/15,-1/5,3/5,-1/5);}                }
}
//三、体系列式样
ENTITY GridSystemColumn
{//1、第一帧FRAME Default{Line{LINE:1,(158,182,206),(0,0,-0,0);LINE:1,(158,182,206),(-0,0,-0,-0);LINE:1,(158,182,206),(-0,-0,0,-0);        }        Fill{RECTANGLE:0,(0,0,0),(228,236,247),(0,0,-1,-1);}}        FRAME DefaultEnter{Line{LINE:1,(135,159,183),(0,0,-0,0);LINE:1,(135,159,183),(-0,0,-0,-0);LINE:1,(135,159,183),(-0,-0,0,-0);        }        Fill{RECTANGLE:0,(0,0,0),(187,196,209),(0,0,-1,-1);}}//2、第二帧FRAME Selected{Line{LINE:1,(255,255,255),(0,0,-0,0);LINE:1,(255,255,255),(-0,1,-0,-0);LINE:1,(255,255,255),(-0,-0,0,-0);                                }        Fill{RECTANGLE:0,(0,0,0),(157,198,223),(0,1,-1,-1);}                }FRAME SelectedEnter{Line{LINE:1,(255,255,255),(0,0,-0,0);LINE:1,(255,255,255),(-0,1,-0,-0);LINE:1,(255,255,255),(-0,-0,0,-0);                                }        Fill{RECTANGLE:0,(0,0,0),(187,196,209),(0,1,-1,-1);}                }//3、第三帧FRAME Focus{Line{LINE:1,(242,149,54),(0,0,-0,0);LINE:1,(242,149,54),(-0,0,-0,-0);LINE:1,(242,149,54),(-0,-0,0,-0);                        }        Fill{RECTANGLE:0,(0,0,0),(255,213,141),(0,1,-1,-1);}        }FRAME FocusEnter{Line{LINE:1,(242,149,54),(0,0,-0,0);LINE:1,(242,149,54),(-0,0,-0,-0);LINE:1,(242,149,54),(-0,-0,0,-0);                        }        Fill{RECTANGLE:0,(0,0,0),(241,192,92),(0,1,-1,-1);}        }
}//四、体系行式样
ENTITY GridSystemRow
{//1、第一帧FRAME Default{Line{LINE:1,(158,182,206),(0,0,0,-0);LINE:1,(158,182,206),(-0,0,-0,-0);LINE:1,(158,182,206),(0,-0,-0,-0);        }        Fill{SMOOTINGRECT:0,(249,252,253),(211,219,233),(0,0,-1,-1);}}        FRAME DefaultEnter{Line{LINE:1,(135,159,183),(0,0,0,-0);LINE:1,(135,159,183),(-0,0,-0,-0);LINE:1,(135,159,183),(0,-0,-0,-0);        }        Fill{SMOOTINGRECT:0,(223,226,228),(189,197,210),(0,0,-1,-1);}}//2、第二帧FRAME Selected{Line{LINE:1,(255,255,255),(0,0,0,-0);LINE:1,(255,255,255),(0,-0,-0,-0);LINE:1,(255,255,255),(-0,-0,-0,0);                                }        Fill{RECTANGLE:0,(0,0,0),(157,198,223),(1,0,-1,-1);}                }FRAME SelectedEnter{Line{LINE:1,(255,255,255),(0,0,0,-0);LINE:1,(255,255,255),(0,-0,-0,-0);LINE:1,(255,255,255),(-0,-0,-0,0);                                }        Fill{SMOOTINGRECT:0,(223,226,228),(189,197,210),(0,0,-1,-1);                        }                }//3、第三帧FRAME Focus{Line{LINE:1,(242,149,54),(0,0,0,-0);LINE:1,(242,149,54),(0,-0,-0,-0);LINE:1,(242,149,54),(-0,-0,-0,0);                        }        Fill{SMOOTINGRECT:0,(249,217,159),(241,193,95),(1,0,-1,-1);}        }FRAME FocusEnter{Line{LINE:1,(242,149,54),(0,0,0,-0);LINE:1,(242,149,54),(0,-0,-0,-0);LINE:1,(242,149,54),(-0,-0,-0,0);                        }        Fill{SMOOTINGRECT:0,(225,213,141),(242,149,54),(1,0,-1,-1);}        }
}//五、迁移转变条式样
ENTITY HScrollbar
{//内容的大小RECT(0,-15,-0,-0);RECTBUTTONUP(0,-15,15,-0);RECTBUTTONDOWN(-15,-15,-0,-0);        //1、第一帧FRAME BackGround{Line{LINE:1,(119,151,192),(0,0,-0,0);LINE:1,(117,148,189),(0,1,-0,1);LINE:1,(125,157,197),(0,-1,-0,-1);        LINE:1,(132,162,200),(0,-0,-0,-0);        }        Fill{RECTANGLE:0,(0,0,0),(120,152,194),(0,0,-0,-0);//TRIANGLE:0,(0,0,0),(66,75,99),(5,7,9,3,9,-3);//TRIANGLE:0,(0,0,0),(66,75,99),(-5,7,-9,3,-9,-3);}}        FRAME ButtonHome{Line{LINE:1,(86,103,143),(0,0,14,0);LINE:1,(86,103,143),(0,0,0,-0);LINE:1,(86,103,143),(14,0,14,-0);        LINE:1,(86,103,143),(0,-0,14,-0);        }        Fill{RECTANGLE:0,(0,0,0),(233,236,241),(1,1,15,7);RECTANGLE:0,(0,0,0),(179,195,215),(1,7,15,-1);TRIANGLE:0,(0,0,0),(66,75,99),(5,7,9,3,9,-3);}}FRAME ButtonHomeEnter{Line{LINE:1,(60,110,176),(0,0,14,0);LINE:1,(60,110,176),(0,0,0,-0);LINE:1,(60,110,176),(14,0,14,-0);        LINE:1,(60,110,176),(0,-0,14,-0);        }        Fill{RECTANGLE:0,(0,0,0),(192,212,237),(1,1,15,7);RECTANGLE:0,(0,0,0),(149,178,215),(1,7,15,-1);TRIANGLE:0,(0,0,0),(66,75,99),(5,7,9,3,9,-3);}}FRAME ButtonHomePress{Line{LINE:1,(23,73,138),(0,0,14,0);LINE:1,(23,73,138),(0,0,0,-0);LINE:1,(23,73,138),(14,0,14,-0);        LINE:1,(23,73,138),(0,-0,14,-0);        }        Fill{RECTANGLE:0,(0,0,0),(156,187,229),(1,1,15,7);RECTANGLE:0,(0,0,0),(97,146,221),(1,7,15,-1);TRIANGLE:0,(0,0,0),(66,75,99),(5,7,9,3,9,-3);}}        FRAME ButtonEnd{Line{LINE:1,(86,103,143),(-0,0,-14,0);LINE:1,(86,103,143),(-0,0,-0,-0);LINE:1,(86,103,143),(-14,0,-14,-0);        LINE:1,(86,103,143),(-0,-0,-14,-0);}        Fill{RECTANGLE:0,(0,0,0),(233,236,241),(-15,1,-1,7);RECTANGLE:0,(0,0,0),(179,195,215),(-15,7,-1,-1);TRIANGLE:0,(0,0,0),(66,75,99),(-4,7,-8,3,-8,-3);}}FRAME ButtonEndEnter{Line{LINE:1,(60,110,176),(-0,0,-14,0);LINE:1,(60,110,176),(-0,0,-0,-0);LINE:1,(60,110,176),(-14,0,-14,-0);        LINE:1,(60,110,176),(-0,-0,-14,-0);}        Fill{RECTANGLE:0,(0,0,0),(192,212,237),(-15,1,-1,7);RECTANGLE:0,(0,0,0),(149,178,215),(-15,7,-1,-1);TRIANGLE:0,(0,0,0),(66,75,99),(-4,7,-8,3,-8,-3);}}FRAME ButtonEndPress{Line{LINE:1,(23,73,138),(-0,0,-14,0);LINE:1,(23,73,138),(-0,0,-0,-0);LINE:1,(23,73,138),(-14,0,-14,-0);        LINE:1,(23,73,138),(-0,-0,-14,-0);}        Fill{RECTANGLE:0,(0,0,0),(156,187,229),(-15,1,-1,7);RECTANGLE:0,(0,0,0),(97,146,221),(-15,7,-1,-1);TRIANGLE:0,(0,0,0),(66,75,99),(-4,7,-8,3,-8,-3);}}FRAME Anchor{Line{LINE:1,(85,103,143),(0,0,-0,0);LINE:1,(85,103,143),(0,0,0,-0);LINE:1,(85,103,143),(-0,0,-0,-0);        LINE:1,(85,103,143),(0,-0,-0,-0);        LINE:1,(123,131,141),(0.5-2,4,0.5-2,-3);LINE:1,(123,131,141),(0.5,4,0.5,-3);LINE:1,(123,131,141),(0.5+2,4,0.5+2,-3);LINE:1,(123,131,141),(0.5+4,4,0.5+4,-3);LINE:1,(255,255,255),(0.5-3,3,0.5-3,-4);LINE:1,(255,255,255),(0.5-1,3,0.5-1,-4);LINE:1,(255,255,255),(0.5+1,3,0.5+1,-4);LINE:1,(255,255,255),(0.5+3,3,0.5+3,-4);                        }        Fill{SMOOTINGRECT:0,(243,245,248),(221,227,237),(1,1,-1,7);SMOOTINGRECT:0,(198,210,224),(156,174,195),(1,8,-1,-1);}}FRAME AnchorEnter{Line{LINE:1,(60,110,176),(0,0,-0,0);LINE:1,(60,110,176),(0,0,0,-0);LINE:1,(60,110,176),(-0,0,-0,-0);        LINE:1,(60,110,176),(0,-0,-0,-0);        LINE:1,(123,131,141),(0.5-2,4,0.5-2,-3);LINE:1,(123,131,141),(0.5,4,0.5,-3);LINE:1,(123,131,141),(0.5+2,4,0.5+2,-3);LINE:1,(123,131,141),(0.5+4,4,0.5+4,-3);LINE:1,(255,255,255),(0.5-3,3,0.5-3,-4);LINE:1,(255,255,255),(0.5-1,3,0.5-1,-4);LINE:1,(255,255,255),(0.5+1,3,0.5+1,-4);LINE:1,(255,255,255),(0.5+3,3,0.5+3,-4);                        }        Fill{SMOOTINGRECT:0,(208,226,250),(199,219,246),(1,1,-1,7);SMOOTINGRECT:0,(166,198,240),(155,185,224),(1,8,-1,-1);}}FRAME AnchorPress{Line{LINE:1,(23,73,138),(0,0,-0,0);LINE:1,(23,73,138),(0,0,0,-0);LINE:1,(23,73,138),(-0,0,-0,-0);        LINE:1,(23,73,138),(0,-0,-0,-0);        LINE:1,(255,255,255),(0.5-2,4,0.5-2,-3);LINE:1,(255,255,255),(0.5,4,0.5,-3);LINE:1,(255,255,255),(0.5+2,4,0.5+2,-3);LINE:1,(255,255,255),(0.5+4,4,0.5+4,-3);LINE:1,(123,131,141),(0.5-3,3,0.5-3,-4);LINE:1,(123,131,141),(0.5-1,3,0.5-1,-4);LINE:1,(123,131,141),(0.5+1,3,0.5+1,-4);LINE:1,(123,131,141),(0.5+3,3,0.5+3,-4);                        }        Fill{SMOOTINGRECT:0,(175,206,247),(162,197,242),(1,1,-1,7);SMOOTINGRECT:0,(107,162,234),(100,151,218),(1,8,-1,-1);}}
}ENTITY VScrollbar
{//内容的大小RECT(-15,0,-0,-0);RECTBUTTONUP(-15,0,-0,15);RECTBUTTONDOWN(-15,-15,-0,-0);        //1、第一帧FRAME BackGround{Line{LINE:1,(119,151,192),(0,0,0,-0);LINE:1,(117,148,189),(1,0,1,-0);LINE:1,(125,157,197),(-1,0,-1,-0);        LINE:1,(132,162,200),(-0,0,-0,-0);        }        Fill{RECTANGLE:0,(0,0,0),(120,152,194),(0,0,-0,-0);//TRIANGLE:0,(0,0,0),(66,75,99),(7,5,3,9,-3,9);//TRIANGLE:0,(0,0,0),(66,75,99),(7,-5,3,-9,-3,-9);}}        FRAME ButtonHome{Line{LINE:1,(86,103,143),(0,0,0,14);LINE:1,(86,103,143),(0,0,-0,0);LINE:1,(86,103,143),(0,14,-0,14);        LINE:1,(86,103,143),(-0,0,-0,14);        }        Fill{RECTANGLE:0,(0,0,0),(233,236,241),(1,1,7,15);RECTANGLE:0,(0,0,0),(179,195,215),(7,1,-1,15);TRIANGLE:0,(0,0,0),(66,75,99),(7,4,3,9,-3,9);}}FRAME ButtonHomeEnter{Line{LINE:1,(60,110,176),(0,0,0,14);LINE:1,(60,110,176),(0,0,-0,0);LINE:1,(60,110,176),(0,14,-0,14);        LINE:1,(60,110,176),(-0,0,-0,14);        }        Fill{RECTANGLE:0,(0,0,0),(192,212,237),(1,1,7,15);RECTANGLE:0,(0,0,0),(149,178,215),(7,1,-1,15);TRIANGLE:0,(0,0,0),(66,75,99),(7,4,3,9,-3,9);}}FRAME ButtonHomePress{Line{LINE:1,(23,73,138),(0,0,0,14);LINE:1,(23,73,138),(0,0,-0,0);LINE:1,(23,73,138),(0,14,-0,14);        LINE:1,(23,73,138),(-0,0,-0,14);        }        Fill{RECTANGLE:0,(0,0,0),(156,187,229),(1,1,7,15);RECTANGLE:0,(0,0,0),(97,146,221),(7,1,-1,15);TRIANGLE:0,(0,0,0),(66,75,99),(7,4,3,9,-3,9);}}        FRAME ButtonEnd{Line{LINE:1,(86,103,143),(0,-0,0,-14);LINE:1,(86,103,143),(0,-0,-0,-0);LINE:1,(86,103,143),(0,-14,-0,-14);        LINE:1,(86,103,143),(-0,-0,-0,-14);}        Fill{RECTANGLE:0,(0,0,0),(233,236,241),(1,-15,7,-1);RECTANGLE:0,(0,0,0),(179,195,215),(7,-15,-1,-1);TRIANGLE:0,(0,0,0),(66,75,99),(7,-4,3,-8,-3,-8);}}FRAME ButtonEndEnter{Line{LINE:1,(60,110,176),(0,-0,0,-14);LINE:1,(60,110,176),(0,-0,-0,-0);LINE:1,(60,110,176),(0,-14,-0,-14);        LINE:1,(60,110,176),(-0,-0,-0,-14);}        Fill{RECTANGLE:0,(0,0,0),(192,212,237),(1,-15,7,-1);RECTANGLE:0,(0,0,0),(149,178,215),(7,-15,-1,-1);TRIANGLE:0,(0,0,0),(66,75,99),(7,-4,3,-8,-3,-8);}}FRAME ButtonEndPress{Line{LINE:1,(23,73,138),(0,-0,0,-14);LINE:1,(23,73,138),(0,-0,-0,-0);LINE:1,(23,73,138),(0,-14,-0,-14);        LINE:1,(23,73,138),(-0,-0,-0,-14);}        Fill{RECTANGLE:0,(0,0,0),(156,187,229),(1,-15,7,-1);RECTANGLE:0,(0,0,0),(97,146,221),(7,-15,-1,-1);TRIANGLE:0,(0,0,0),(66,75,99),(7,-4,3,-8,-3,-8);}}FRAME Anchor{Line{LINE:1,(85,103,143),(0,0,0,-0);LINE:1,(85,103,143),(0,0,-0,0);LINE:1,(85,103,143),(0,-0,-0,-0);        LINE:1,(85,103,143),(-0,0,-0,-0);        LINE:1,(123,131,141),(4,0.5-2,-3,0.5-2);LINE:1,(123,131,141),(4,0.5,-3,0.5);LINE:1,(123,131,141),(4,0.5+2,-3,0.5+2);LINE:1,(123,131,141),(4,0.5+4,-3,0.5+4);LINE:1,(255,255,255),(3,0.5-3,-4,0.5-3);LINE:1,(255,255,255),(3,0.5-1,-4,0.5-1);LINE:1,(255,255,255),(3,0.5+1,-4,0.5+1);LINE:1,(255,255,255),(3,0.5+3,-4,0.5+3);                        }        Fill{SMOOTINGRECT:-0,(243,245,248),(221,227,237),(1,1,6,-1);SMOOTINGRECT:-0,(198,210,224),(156,174,195),(7,1,-1,-1);}}FRAME AnchorEnter{Line{LINE:1,(60,110,176),(0,0,0,-0);LINE:1,(60,110,176),(0,0,-0,0);LINE:1,(60,110,176),(0,-0,-0,-0);        LINE:1,(60,110,176),(-0,0,-0,-0);        LINE:1,(123,131,141),(4,0.5-2,-3,0.5-2);LINE:1,(123,131,141),(4,0.5,-3,0.5);LINE:1,(123,131,141),(4,0.5+2,-3,0.5+2);LINE:1,(123,131,141),(4,0.5+4,-3,0.5+4);LINE:1,(255,255,255),(3,0.5-3,-4,0.5-3);LINE:1,(255,255,255),(3,0.5-1,-4,0.5-1);LINE:1,(255,255,255),(3,0.5+1,-4,0.5+1);LINE:1,(255,255,255),(3,0.5+3,-4,0.5+3);                        }        Fill{SMOOTINGRECT:-0,(208,226,250),(199,219,246),(1,1,6,-1);SMOOTINGRECT:-0,(166,198,240),(155,185,224),(7,1,-1,-1);}}FRAME AnchorPress{Line{LINE:1,(23,73,138),(0,0,0,-0);LINE:1,(23,73,138),(0,0,-0,0);LINE:1,(23,73,138),(0,-0,-0,-0);        LINE:1,(23,73,138),(-0,0,-0,-0);        LINE:1,(255,255,255),(4,0.5-2,-3,0.5-2);LINE:1,(255,255,255),(4,0.5,-3,0.5);LINE:1,(255,255,255),(4,0.5+2,-3,0.5+2);LINE:1,(255,255,255),(4,0.5+4,-3,0.5+4);LINE:1,(123,131,141),(3,0.5-3,-4,0.5-3);LINE:1,(123,131,141),(3,0.5-1,-4,0.5-1);LINE:1,(123,131,141),(3,0.5+1,-4,0.5+1);LINE:1,(123,131,141),(3,0.5+3,-4,0.5+3);                        }        Fill{SMOOTINGRECT:-0,(175,206,247),(162,197,242),(1,1,6,-1);SMOOTINGRECT:-0,(107,162,234),(100,151,218),(7,1,-1,-1);}}
}ENTITY Navigator
{//1、第一帧FRAME Default{Fill{RECTANGLE:0,(0,0,0),(228,236,247),(0,0,-1,-1);}}
}

  源码地址:http://www.natframe.com/forum.php?mod=viewthread&tid=446&extra=page%3D1南丁格尔

《更多网站建设信息、网站开发资讯,敬请咨询百微信息科技,021-57700304》


  • php获取目标函数履行时候
  • STL进修笔记--非变易算法
  • PMEdit一个富文本框可以编辑文本、并可以显示GIF动画
  • Python入门(一):一句话统计文章不反复汉字数
  • Django1.5内置的用户认证体系介绍(之一)--by hillfree
  • Django1.5内置的用户认证体系介绍(之二)应用User对象--by hillfree
  • python根蒂根基入门
  • Codeigniter+PHPExcel导出Excel文件

PMEdit一个富文本框可以编辑文本、并可以显示GIF动画相关推荐

  1. PMEdit一个富文本框可以编辑文本、图片并可以显示GIF动画

    一.在开始之前首先吐槽一下,本人是一个独立开发者,在中国独立开发者就代表一个比较苦逼的行业,特别是对底层东西进行开发者,尤其本人研究方向是编译器.解析器基本上没有公司要,所以出来做个独立开发者.作为独 ...

  2. 文本框可编辑查看页面

    <!DOCTYPE html> <html><head><meta charset="utf-8" /><title>文 ...

  3. 使input文本框不可编辑的3种方法

    转自点击打开链接 今天试了一下使input文本框不可编辑的3种方法,现在总结一下: disabled 属性规定应该禁用 input 元素,被禁用的 input 元素,不可编辑,不可复制,不可选择,不能 ...

  4. php编辑框禁止输入,如何设置表单的input文本框不可编辑

    设置表单input文本框不可编辑的方法:首先创建相应的代码文件:然后通过为表单字段设置为"οnfοcus=this.blur(),readonly.disabled"来实现不可编辑 ...

  5. vue 清除 <el-input>当前文本框不能编辑this.$forceUpdate();

    vue 清除 当前文本框不能编辑 在当前文本框添加@change 方法 调用 urlMed() . urlMed() {this.$forceUpdate();}

  6. 在html中文本框不可编辑状态,input框不可编辑_怎么让Html文本框不可编辑

    摘要 腾兴网为您分享:怎么让Html文本框不可编辑,中国知网,优品多多,优路教育,银万财富等软件知识,以及hackertyperneo,永久进销存软件,dnf女鬼剑武器补丁,锁机软件,hevc编码器, ...

  7. HTML -- 使input文本框不可编辑的2种方法(有disabled属性的input框,后台获取不到值)

    1. 使input文本框不可编辑的2种方法 今天在写JSP的时候我写了这样的代码 updateBook.jsp <form action="${pageContext.request. ...

  8. JS实现文本框不可编辑

    方法1: οnfοcus=this.blur() 当鼠标放不上就离开焦点 <input type="text" name="input1" value=& ...

  9. html 设置不能选中文本框,win10系统下怎样让Html文本框不可编辑

    学习网页设计的朋友们,相信对Html并不陌生.不过,Html博大精深,因此有很多内容让网页设计人员很是困惑,最常见的就是怎么让Html文本框不可编辑?接下来,小编就以windows10系统为例,分享让 ...

最新文章

  1. 从反编译的角度去观察C#6.0
  2. boost::geometry模块实现自定义点示例
  3. 今天maven install时碰到的两个问题(堆溢出和编译错误)
  4. 长文详解基于并行计算的条件随机场CRF
  5. mac使用之必备神器
  6. python图表制作方法_python图表制作
  7. 探索前沿脑科学,英特尔携手西悉尼大学共建“超级”计算机
  8. threejs第十三用 简单堆积木
  9. 神经网络中_,predicted=中_,的作用
  10. Photoshop调出花朵照片复古冷色效果
  11. UEFI开发探索82- YIE002USB开发板(05 制作HID设备)
  12. 企查查app新增企业数据抓取
  13. GEE遥感云大数据如何应用在林业生态领域中?监测森林扰动、火灾、砍伐退化、生理参数、植被状态
  14. 这招PDF合并方法,一直用一直爽,你绝对需要
  15. 用Keil 开发TI微控制器(TivaC)
  16. 微信红包接入2-项目集成
  17. 0基础建站教程,1小时建网站,王通教程
  18. Brain Tumor Segmentation (BraTS) 脑部肿瘤分割1--数据篇
  19. 【前端】170题面试题和学习答案,学不完的那种
  20. 简单爱--奋斗5年 从月薪3500到700万

热门文章

  1. Java基础案例2-6:登录注册小程序
  2. 51单片机八位数码管1到F动态滚动显示仿真及程序
  3. OpenBot开源小车
  4. 周边pd是什么意思_韩国综艺里经常说的VJ、PD是什么意思
  5. 双硬盘SSD+HDD安装双系统win10+Ubuntu16.04
  6. 加装固态,重装系统(双系统)
  7. 目标检测算法的大体框架-------backbone、head、neck
  8. python进行大小写转换
  9. Android基于环信SDK开发IM即时聊天(一)
  10. 表格内容单/多行展示(一)- 单行/多行显示的方法