- 积分
- 2521
- 最后登录
- 2024-4-24
- 精华
- 3
- 阅读权限
- 205
- 主题
- 301
- UID
- 79171
- 帖子
- 5469
- PB币
- 19780
- 威望
- 53
- 贡献
- 0
- 技术
- 64
- 活跃
- 1810
- UID
- 79171
- 帖子
- 5469
- PB币
- 19780
- 贡献
- 0
- 技术
- 64
- 活跃
- 1810
|
17F
发表于 2015-2-20 10:32:20
IP属地重庆
|只看该作者
本帖最后由 slice 于 2015-2-20 11:15 编辑
依文 发表于 2015-2-20 10:04
远景现在这是怎么了?居然任由2个小学生在这里胡闹!
谁告诉你Metro App闪退的原因是XAML的?我知道了, ...
告诉他们一个残酷的现实:
说登陆界面我们就来说登陆界面吧。
例如XP的登陆界面logonui.exe之类。
你可以找个工具解开,里面有个UI的资源。
看看里面是不是类似HTML的标记语言。
虽然标签可能是自定义的元素,但可完全是类似HTML的语法。
虽然不知道是什么东西解析的还是内置的解析引擎。
界面部分它就是明文的,界面和代码完全分离的。
因为当年流行过该XP的登陆界面,我也改过。
只需要改这个资源文件,就可以改变界面的风格布局,完全自定义。
最后把这个文件资源文件,和图片资源通过reshacker之类替换。
完全不用管所谓的代码,只是替换的纯粹的明文的资源。
所以别给我扯啥子明文不安全,凡是涉及比较风格化的界面和效果。
都是类似XAML,HTML之类力求能够清晰描述界面本身的语言。
业务代码和界面尽量分离。
新生态,清一色的是xml之类的标记语言描述界面,IOS,Android无一例外。
是时候把XAML作为系统的基础图形结构。
不要搞得那些个性化界面,要么用第三方库,要么自己的搞出一套半残UI框架。
需要像XAML这类东西,用户只需要在blend这种类似flash的工具里面直接做界面动画就好。
做应用可以用系统或第三方控件,也可以方便的自己封装。
就像HTML做网页我们会用别人封装好的日期选择器,表格之类。
XAML就像HTML,但它在多年前就拥有了和今天HTML5的各种效果和动画能力。
而且那些效果还能享受GPU加速,解决缩放DPI,新的字体渲染,都不用设计人员操心。
而这些早该成为系统的基础,好的基础才会有好的配套。
还有WP7不就全面XAML,流畅得掉渣的系统应用是XAML+C++。而对开发者只开放XAML+C#的silverlight打死不开放native code,因为早计划要抛弃CE内核。
你可以说WinRT不够成熟,我都认。Win10的WinRT我才勉强是认为1.0,成熟至少2.0。不排除已有功能都有不少BUG,就像WP8.1的WinRT,有些问题根本可以算是BUG。
但说XAML,它已经定性很久了。
XAML没听说1.0,2.0,2.1在经常修正规范添加特性吧。
它对样式,对资源的定义方式,它基础的图形,和变换,感觉从我接触XAML就未变过。
变的只是控件库,就像HTML5我也用第三方的日期选择器一样。
WinRT,silverlight,WPF都有一套自己的控件的实现,只是方便应用开发者。
同时也可以看到office touch这种,压根不用啥WinRT提供的那套metro控件库。
因为它压根也不是WinRT提供的那套控件的metro风格。
上百个usercontrol大多用XAML自己封装的吧。
我想说,界面丑不是XAML的错,你去找WinRT。
https://bbs.pcbeta.com/viewthread-1580998-1-1.html看我隔壁的帖子,我也觉得WinRT这套控件默认样式丑得不想说了。
希望更多应用像Office这样子,有自己的想法自己做界面。
顺带贴出longonui.exe的UIfile部分内容,什么明文不安全的理由太扯淡了。- <style resid=leftpanelss>
- element {
- background: argb(0,0,0,0);
- fontface: rcstr(1);
- }
- element [id=atom(product)] {
- animation: alpha | s | mediumslow;
- }
- element [id=atom(leftpanel)] {
- foreground: rgb(239,247,255);
- }
- element [id=atom(welcome)] {
- fontstyle: italic;
- fontsize: rcint(44) pt;
- fontweight: bold;
- padding: rect(0rp,0rp,22rp,0);
- contentalign: topright;
- }
- element [id=atom(welcomeshadow)] {
- foreground: rgb(49,81,181);
- fontstyle: italic;
- fontsize: rcint(44) pt;
- fontweight: bold;
- padding: rect(2rp,3rp,20rp,0);
- contentalign: topright;
- }
- element[id=atom(help)] {
- fontsize: rcint(45) pt;
- padding: rect(81rp,81rp,0,0);
- contentalign: wrapright;
- }
- </style>
- <style resid=rightpanelss>
- element {
- background: argb(0,0,0,0);
- }
- element [id=atom(divider)] {
- background: rcbmp(124,6,#FF00FF,0,0,1,0);
- }
- scrollbar [vertical] {
- layoutpos: nineright;
- background: rgb(115,146,231);
- }
- viewer {
- layoutpos: nineclient;
- }
- thumb {
- background: rcbmp(111,6,#FF00FF,0,0,1,0);
- borderthickness: rect(3,3,3,3);
- }
- repeatbutton [id=atom(lineup)] {
- content: rcbmp(110,3,-1,sysmetric(20),sysmetric(20),0,0);
- }
- repeatbutton [id=atom(linedown)] {
- content: rcbmp(109,3,-1,sysmetric(20),sysmetric(20),0,0);
- }
- </style>
- <style resid=hotaccountlistss>
- element {
- background: argb(0,0,0,0);
- fontface: rcstr(3);
- }
- selector {
- padding: rect(0rp,26rp,5rp,26rp);
- }
- logonaccount {
- cursor: hand;
- foreground: rgb(239,247,255);
- background: rgb(90,126,220);
- animation: alpha | log | fast;
- alpha: 96;
- }
- logonaccount [logonstate=1] {
- animation: rectangle | s | mediumfast;
- cursor: arrow;
- alpha: 255;
- }
- logonaccount [mousewithin] {
- cursor: hand;
- alpha: 255;
- }
- logonaccount [selected] {
- cursor: hand;
- alpha: 255;
- }
- element [id=atom(userpane)] {
- padding: rect(2rp,2rp,14rp,2rp);
- borderthickness: rect(5,5,0,5);
- bordercolor: rgb(90,126,220);
- fontsize: rcint(45) pt;
- }
- element [id=atom(userpane)][selected] {
- background: rcbmp(112,6,#FF00FF,0,0,1,0);
- }
- logonaccount [selected] {
- alpha: 255;
- }
- element [id=atom(pictureframe)] {
- background: rcbmp(113,7,255,0,0,1,0);
- borderthickness: rect(5,5,5,5);
- margin: rect(0,0, 7rp,0);
- }
- element [id=atom(pictureframe)] [mousefocused] {
- background: rcbmp(119,7,255,0,0,1,0);
- borderthickness: rect(5,5,5,5);
- margin: rect(0,0,7rp,0);
- alpha: 255;
- }
- element [id=atom(pictureframe)] [selected] {
- background: rcbmp(119,7,255,0,0,1,0);
- borderthickness: rect(5,5,5,5);
- margin: rect(0,0,7rp,0);
- alpha: 255;
- }
- element [id=atom(username)] {
- foreground: rgb(239,247,255);
- contentalign: endellipsis;
- }
- button [class="status"] {
- background: argb(0,0,0,0);
- foreground: rgb(0,48,156);
- fontsize: rcint(46) pt;
- fontweight: bold;
- }
- button [class="status"][mousefocused] {
- fontstyle: underline;
- }
- button [class="status"][keyfocused] {
- fontstyle: underline;
- }
- button [class="status"][selected] {
- foreground: rgb(239,247,255);
- fontsize: rcint(46) pt;
- fontweight: bold;
- }
- </style>
- <style resid=accountlistss>
- element {
- background: argb(0,0,0,0);
- fontface: rcstr(3);
- }
- selector {
- padding: rect(0rp,26rp,5rp,26rp);
- }
- logonaccount {
- cursor: hand;
- animation: alpha | log | fast;
- background: rgb(90,126,220);
- }
- logonaccount [logonstate=1] {
- animation: rectangle | s | mediumfast;
- cursor: arrow;
- }
- element [id=atom(userpane)] {
- padding: rect(2rp,2rp,14rp,2rp);
- borderthickness: rect(5,5,0,5);
- bordercolor: rgb(90,126,220);
- fontsize: rcint(45) pt;
- }
- element [id=atom(userpane)][selected] {
- background: rcbmp(112,6,#FF00FF,0,0,1,0);
- }
- element [id=atom(pictureframe)] {
- background: rcbmp(113,7,255,0,0,1,0);
- borderthickness: rect(5,5,5,5);
- margin: rect(0,0,7rp,0);
- }
- element [id=atom(username)] {
- foreground: rgb(239,247,255);
- contentalign: endellipsis;
- }
- button [class="status"] {
- background: argb(0,0,0,0);
- foreground: rgb(0,48,156);
- fontsize: rcint(46) pt;
- fontweight: bold;
- contentalign: wrapleft;
- }
- button [class="status"][mousefocused] {
- fontstyle: underline;
- }
- button [class="status"][keyfocused] {
- fontstyle: underline;
- }
- button [class="status"][selected] {
- foreground: rgb(239,247,255);
- fontsize: rcint(46) pt;
- fontweight: bold;
- }
- </style>
- <style resid=passwordpaness>
- element {
- background: argb(0,0,0,0);
- }
- element [id=atom(passwordpanelayer)] {
- padding: rect(71rp,0,0,0);
- }
- element [id=atom(instruct)] {
- fontface: rcstr(48);
- fontsize: rcint(47) pt;
- foreground: white;
- padding: rect(3rp,0,0,3rp);
- }
- edit [id=atom(password)] {
- background: rcbmp(102,6,#FF00FF,0,0,1,0);
- borderthickness: rect(3,3,5,5);
- passwordcharacter: 9679;
- fontface: "arial";
- fontsize: 16pt;
- }
- button [id=atom(go)] {
- margin: rect(5rp,0,0,0);
- content: rcbmp(103,3,-1,26rp,26rp,0,0);
- padding: rect(0rp,1rp,0,1rp);
- }
- button [id=atom(go)][keyfocused] {
- content: rcbmp(104,3,-1,26rp,26rp,0,0);
- }
- button [id=atom(info)] {
- margin: rect(5rp,0,0,0);
- content: rcbmp(105,3,-1,28rp,28rp,0,0);
- }
- button [id=atom(info)][keyfocused] {
- content: rcbmp(106,3,-1,28rp,28rp,0,0);
- }
- element [id=atom(keyboard)] {
- cursor: arrow;
- margin: rect(5rp,0,0,0);
- }
- </style>
- <style resid=scroller>
- scrollbar {
- layoutpos: ninebottom;
- }
- scrollbar [vertical] {
- layoutpos: nineright;
- }
- viewer {
- layoutpos: nineclient;
- }
- thumb {
- background: dtb(handlemap(1), 3, 1);
- content: dtb(handlemap(1), 9, 1);
- contentalign: middlecenter;
- }
- thumb [mousefocused] {
- background: dtb(handlemap(1), 3, 2);
- content: dtb(handlemap(1), 9, 2);
- }
- thumb [captured] {
- background: dtb(handlemap(1), 3, 3);
- content: dtb(handlemap(1), 9, 3);
- }
- repeatbutton [id=atom(lineup)] {
- background: dtb(handlemap(1), 1, 1);
- width: sysmetric(2);
- height: sysmetric(20);
- }
- repeatbutton [id=atom(lineup)][mousefocused] {
- background: dtb(handlemap(1), 1, 2);
- }
- repeatbutton [id=atom(lineup)][pressed] {
- background: dtb(handlemap(1), 1, 3);
- }
- repeatbutton [id=atom(linedown)] {
- background: dtb(handlemap(1), 1, 5);
- width: sysmetric(2);
- height: sysmetric(20);
- }
- repeatbutton [id=atom(linedown)][mousefocused] {
- background: dtb(handlemap(1), 1, 6);
- }
- repeatbutton [id=atom(linedown)][pressed] {
- background: dtb(handlemap(1), 1, 7);
- }
- repeatbutton [id=atom(pageup)] {
- background: dtb(handlemap(1), 7, 1);
- }
- repeatbutton [id=atom(pageup)][mousefocused] {
- background: dtb(handlemap(1), 7, 2);
- }
- repeatbutton [id=atom(pageup)][pressed] {
- background: dtb(handlemap(1), 7, 3);
- }
- repeatbutton [id=atom(pagedown)] {
- background: dtb(handlemap(1), 6, 1);
- }
- repeatbutton [id=atom(pagedown)][mousefocused] {
- background: dtb(handlemap(1), 6, 2);
- }
- repeatbutton [id=atom(pagedown)][pressed] {
- background: dtb(handlemap(1), 6, 3);
- }
- </style>
- <logonframe resid=main id=atom(frame) sheet=styleref(framess) layout=borderlayout()>
- <element id=atom(toppanel) sheet=styleref(toppanelss) layout=borderlayout() layoutpos=top height=80rp>
- <element id=atom(divider) layoutpos=bottom height=2rp />
- </element>
- <element id=atom(bottompanel) sheet=styleref(bottompanelss) layout=borderlayout() layoutpos=bottom>
- <element id=atom(divider) layoutpos=top height=2rp />
- <element id=atom(options) layout=borderlayout() layoutpos=client>
- <element layout=borderlayout() layoutpos=left>
- <button id=atom(power) layout=borderlayout() layoutpos=top accessible=true accrole=43 accname=rcstr(11)>
- <element layoutpos=left content=rcbmp(107,3,-1,26rp,26rp,0,0) />
- <element id=atom(label) layoutpos=client margin=rect(2rp,0,0,0) />
- </button>
- <button id=atom(undock) layout=borderlayout() layoutpos=top margin=rect(0,2rp,0,0) accessible=true accrole=43 accname=rcstr(14)>
- <element layoutpos=left content=rcbmp(108,3,-1,26rp,26rp,0,0) />
- <element id=atom(label) layoutpos=client margin=rect(2rp,0,0,0) />
- </button>
- </element>
- <element id=atom(instruct) layoutpos=right content=rcstr(25) width=325rp />
- </element>
- </element>
- <element id=atom(contentcontainer) layout=flowlayout(1,3,2,3) layoutpos=client content=rcbmp(100,0,0,219rp,207rp,1,0)>
- <element id=atom(leftpanel) sheet=styleref(leftpanelss) layout=filllayout() layoutpos=left>
- <element id=atom(logoarea) layout=verticalflowlayout(0,3,3,2)>
- <element id=atom(product) contentalign=topright padding=rect(0rp,0rp,20rp,20rp) content=rcbmp(123,3,-1,137,86,0,0) background=rgb(90,126,220) />
- <element id=atom(help) contentalign=wrapright width=384rp padding=rect(0rp,0rp,40rp,0rp) />
- </element>
- <element id=atom(msgarea) layout=verticalflowlayout(0,0,0,2)>
- <element layout=filllayout() width=384rp>
- <element id=atom(welcomeshadow) content=rcstr(7) />
- <element id=atom(welcome) content=rcstr(7) />
- </element>
- </element>
- </element>
- <element id=atom(rightpanel) sheet=styleref(rightpanelss) layout=borderlayout() layoutpos=left width=384rp>
- <element id=atom(divider) layoutpos=left width=1rp />
- <scrollviewer id=atom(scroller) sheet=styleref(scroller) layoutpos=client xscrollable=false margin=rect(26rp,0rp,0rp,0rp)>
- <selector id=atom(accountlist) sheet=styleref(accountlistss) layout=verticalflowlayout(0,3,3,2) />
- </scrollviewer>
- </element>
- </element>
- </logonframe>
- <logonaccount resid=accountitem id=atom(accountitem) layout=filllayout() accessible=true accrole=43>
- <element id=atom(userpanelayer) layout=borderlayout() height=80rp>
- <element id=atom(userpane) layout=borderlayout() layoutpos=top>
- <element id=atom(pictureframe) layout=flowlayout(0,2,2) layoutpos=left width=58rp height=58rp>
- <element id=atom(picture) />
- </element>
- <element id=atom(username) layoutpos=top />
- <button id=atom(status0) class="status" layoutpos=none />
- <button id=atom(status1) class="status" layoutpos=none />
- </element>
- </element>
- </logonaccount>
- <element resid=passwordpanel id=atom(passwordpanelayer) sheet=styleref(passwordpaness) layout=borderlayout() height=80rp>
- <element layout=borderlayout() layoutpos=bottom>
- <edit id=atom(password) layoutpos=left width=163rp />
- <element id=atom(keyboard) layoutpos=left />
- <button id=atom(go) layoutpos=left accessible=true accrole=43 accname=rcstr(100) />
- <button id=atom(info) layoutpos=left accessible=true accrole=43 accname=rcstr(13) />
- </element>
- <element id=atom(instruct) layoutpos=bottom content=rcstr(6) />
- </element>
复制代码
|
|