管理驾驶舱 之仪表盘的设计

2024-01-15 09:20

本文主要是介绍管理驾驶舱 之仪表盘的设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     就上次的研究得到很多园友的支持表示感谢。这篇是我最近的新研究。

   我先解释一下

管理驾驶舱是基于ERP的高层决策支持系统。通过详尽的指标体系,实时反映企业的运行 状态,将采集的数据形象化、直观化、具体化。“管理驾驶舱”充分融合了人脑科学、管理科学和信息科学的精华,以人为产品的核心,从管理者的决策环境、企业 管理综合指标的定义以及信息的表述,都围绕着激发人的智能、有利于思维连贯和有效思维判断为目的。将企业管理决策提升到一个新的高度。最大化地发挥高层经 理了解、领导和控制公司业务的管理室(即驾驶舱),实际上是一个为高层管理层提供的“一站式”(One-Stop)决策支持的管理信息中心系统。它以驾驶 舱的形式,通过各种常见的图表(速度表、音量柱、预警雷达、雷达球)形象标示企业运行的关键指标(KPI),直观的监测企业运营情况,并可以对异常关键指 标预警,和

挖掘分析。

框架脚本

js脚本

ExpandedBlockStart.gif 代码
/* 廖强 */

var  jg_ok, jg_ie, jg_fast, jg_dom, jg_moz;


function  _chkDHTM(x, i) {
    x 
=  document.body  ||   null ;
    jg_ie 
=  x  &&   typeof  x.insertAdjacentHTML  !=   " undefined "   &&  document.createElement;
    jg_dom 
=  (x  &&   ! jg_ie  &&
        
typeof  x.appendChild  !=   " undefined "   &&
        
typeof  document.createRange  !=   " undefined "   &&
        
typeof  (i  =  document.createRange()).setStartBefore  !=   " undefined "   &&
        
typeof  i.createContextualFragment  !=   " undefined " );
    jg_fast 
=  jg_ie  &&  document.all  &&   ! window.opera;
    jg_moz 
=  jg_dom  &&   typeof  x.style.MozOpacity  !=   " undefined " ;
    jg_ok 
=   !! (jg_ie  ||  jg_dom);
}

function  _pntCnvDom() {
    
var  x  =   this .wnd.document.createRange();
    x.setStartBefore(
this .cnv);
    x 
=  x.createContextualFragment(jg_fast  ?   this ._htmRpc() :  this .htm);
    
if  ( this .cnv)  this .cnv.appendChild(x);
    
this .htm  =   "" ;
}

function  _pntCnvIe() {
    
if  ( this .cnv)  this .cnv.insertAdjacentHTML( " BeforeEnd " , jg_fast  ?   this ._htmRpc() :  this .htm);
    
this .htm  =   "" ;
}

function  _pntDoc() {
    
this .wnd.document.write(jg_fast  ?   this ._htmRpc() :  this .htm);
    
this .htm  =   '' ;
}

function  _pntN() {
    ;
}

function  _mkDiv(x, y, w, h) {
    
this .htm  +=   ' <div style="position:absolute; '   +
        
' left: '   +  x  +   ' px; '   +
        
' top: '   +  y  +   ' px; '   +
        
' width: '   +  w  +   ' px; '   +
        
' height: '   +  h  +   ' px; '   +
        
' clip:rect(0, '   +  w  +   ' px, '   +  h  +   ' px,0); '   +
        
' background-color: '   +   this .color  +
        (
! jg_moz  ?   ' ;overflow:hidden '  :  '' +
        
' ;"><\/div> ' ;
}

function  _mkDivIe(x, y, w, h) {
    
this .htm  +=   ' %% '   +   this .color  +   ' ; '   +  x  +   ' ; '   +  y  +   ' ; '   +  w  +   ' ; '   +  h  +   ' ; ' ;
}

function  _mkDivPrt(x, y, w, h) {
    
this .htm  +=   ' <div style="position:absolute; '   +
        
' border-left: '   +  w  +   ' px solid  '   +   this .color  +   ' ; '   +
        
' left: '   +  x  +   ' px; '   +
        
' top: '   +  y  +   ' px; '   +
        
' width:0px; '   +
        
' height: '   +  h  +   ' px; '   +
        
' clip:rect(0, '   +  w  +   ' px, '   +  h  +   ' px,0); '   +
        
' background-color: '   +   this .color  +
        (
! jg_moz  ?   ' ;overflow:hidden '  :  '' +
        
' ;"><\/div> ' ;
}

var  _regex  =   / %%([^;]+);([^;]+);([^;]+);([^;]+);([^;]+); / g;
function  _htmRpc() {
    
return   this .htm.replace(
        _regex,
        
' <div style="overflow:hidden;position:absolute;background-color: '   +
        
' $1;left:$2;top:$3;width:$4;height:$5"></div>\n ' );
}

function  _htmPrtRpc() {
    
return   this .htm.replace(
        _regex,
        
' <div style="overflow:hidden;position:absolute;background-color: '   +
        
' $1;left:$2;top:$3;width:$4;height:$5;border-left:$4px solid $1"></div>\n ' );
}

function  _mkLin(x1, y1, x2, y2) {
    
if  (x1  >  x2) {
        
var  _x2  =  x2;
        
var  _y2  =  y2;
        x2 
=  x1;
        y2 
=  y1;
        x1 
=  _x2;
        y1 
=  _y2;
    }
    
var  dx  =  x2  -  x1, dy  =  Math.abs(y2  -  y1),
    x 
=  x1, y  =  y1,
    yIncr 
=  (y1  >  y2)  ?   - 1  :  1 ;

    
if  (dx  >=  dy) {
        
var  pr  =  dy  <<   1 ,
        pru 
=  pr  -  (dx  <<   1 ),
        p 
=  pr  -  dx,
        ox 
=  x;
        
while  (dx  >   0 ) {
            
-- dx;
            
++ x;
            
if  (p  >   0 ) {
                
this ._mkDiv(ox, y, x  -  ox,  1 );
                y 
+=  yIncr;
                p 
+=  pru;
                ox 
=  x;
            }
            
else  p  +=  pr;
        }
        
this ._mkDiv(ox, y, x2  -  ox  +   1 1 );
    }

    
else  {
        
var  pr  =  dx  <<   1 ,
        pru 
=  pr  -  (dy  <<   1 ),
        p 
=  pr  -  dy,
        oy 
=  y;
        
if  (y2  <=  y1) {
            
while  (dy  >   0 ) {
                
-- dy;
                
if  (p  >   0 ) {
                    
this ._mkDiv(x ++ , y,  1 , oy  -  y  +   1 );
                    y 
+=  yIncr;
                    p 
+=  pru;
                    oy 
=  y;
                }
                
else  {
                    y 
+=  yIncr;
                    p 
+=  pr;
                }
            }
            
this ._mkDiv(x2, y2,  1 , oy  -  y2  +   1 );
        }
        
else  {
            
while  (dy  >   0 ) {
                
-- dy;
                y 
+=  yIncr;
                
if  (p  >   0 ) {
                    
this ._mkDiv(x ++ , oy,  1 , y  -  oy);
                    p 
+=  pru;
                    oy 
=  y;
                }
                
else  p  +=  pr;
            }
            
this ._mkDiv(x2, oy,  1 , y2  -  oy  +   1 );
        }
    }
}

function  _mkLin2D(x1, y1, x2, y2) {
    
if  (x1  >  x2) {
        
var  _x2  =  x2;
        
var  _y2  =  y2;
        x2 
=  x1;
        y2 
=  y1;
        x1 
=  _x2;
        y1 
=  _y2;
    }
    
var  dx  =  x2  -  x1, dy  =  Math.abs(y2  -  y1),
    x 
=  x1, y  =  y1,
    yIncr 
=  (y1  >  y2)  ?   - 1  :  1 ;

    
var  s  =   this .stroke;
    
if  (dx  >=  dy) {
        
if  (dx  >   0   &&  s  -   3   >   0 ) {
            
var  _s  =  (s  *  dx  *  Math.sqrt( 1   +  dy  *  dy  /  (dx  *  dx))  -  dx  -  (s  >>   1 *  dy)  /  dx;
            _s 
=  ( ! (s  -   4 ?  Math.ceil(_s) : Math.round(_s))  +   1 ;
        }
        
else   var  _s  =  s;
        
var  ad  =  Math.ceil(s  /   2 );

        
var  pr  =  dy  <<   1 ,
        pru 
=  pr  -  (dx  <<   1 ),
        p 
=  pr  -  dx,
        ox 
=  x;
        
while  (dx  >   0 ) {
            
-- dx;
            
++ x;
            
if  (p  >   0 ) {
                
this ._mkDiv(ox, y, x  -  ox  +  ad, _s);
                y 
+=  yIncr;
                p 
+=  pru;
                ox 
=  x;
            }
            
else  p  +=  pr;
        }
        
this ._mkDiv(ox, y, x2  -  ox  +  ad  +   1 , _s);
    }

    
else  {
        
if  (s  -   3   >   0 ) {
            
var  _s  =  (s  *  dy  *  Math.sqrt( 1   +  dx  *  dx  /  (dy  *  dy))  -  (s  >>   1 *  dx  -  dy)  /  dy;
            _s 
=  ( ! (s  -   4 ?  Math.ceil(_s) : Math.round(_s))  +   1 ;
        }
        
else   var  _s  =  s;
        
var  ad  =  Math.round(s  /   2 );

        
var  pr  =  dx  <<   1 ,
        pru 
=  pr  -  (dy  <<   1 ),
        p 
=  pr  -  dy,
        oy 
=  y;
        
if  (y2  <=  y1) {
            
++ ad;
            
while  (dy  >   0 ) {
                
-- dy;
                
if  (p  >   0 ) {
                    
this ._mkDiv(x ++ , y, _s, oy  -  y  +  ad);
                    y 
+=  yIncr;
                    p 
+=  pru;
                    oy 
=  y;
                }
                
else  {
                    y 
+=  yIncr;
                    p 
+=  pr;
                }
            }
            
this ._mkDiv(x2, y2, _s, oy  -  y2  +  ad);
        }
        
else  {
            
while  (dy  >   0 ) {
                
-- dy;
                y 
+=  yIncr;
                
if  (p  >   0 ) {
                    
this ._mkDiv(x ++ , oy, _s, y  -  oy  +  ad);
                    p 
+=  pru;
                    oy 
=  y;
                }
                
else  p  +=  pr;
            }
            
this ._mkDiv(x2, oy, _s, y2  -  oy  +  ad  +   1 );
        }
    }
}

function  _mkLinDott(x1, y1, x2, y2) {
    
if  (x1  >  x2) {
        
var  _x2  =  x2;
        
var  _y2  =  y2;
        x2 
=  x1;
        y2 
=  y1;
        x1 
=  _x2;
        y1 
=  _y2;
    }
    
var  dx  =  x2  -  x1, dy  =  Math.abs(y2  -  y1),
    x 
=  x1, y  =  y1,
    yIncr 
=  (y1  >  y2)  ?   - 1  :  1 ,
    drw 
=   true ;
    
if  (dx  >=  dy) {
        
var  pr  =  dy  <<   1 ,
        pru 
=  pr  -  (dx  <<   1 ),
        p 
=  pr  -  dx;
        
while  (dx  >   0 ) {
            
-- dx;
            
if  (drw)  this ._mkDiv(x, y,  1 1 );
            drw 
=   ! drw;
            
if  (p  >   0 ) {
                y 
+=  yIncr;
                p 
+=  pru;
            }
            
else  p  +=  pr;
            
++ x;
        }
    }
    
else  {
        
var  pr  =  dx  <<   1 ,
        pru 
=  pr  -  (dy  <<   1 ),
        p 
=  pr  -  dy;
        
while  (dy  >   0 ) {
            
-- dy;
            
if  (drw)  this ._mkDiv(x, y,  1 1 );
            drw 
=   ! drw;
            y 
+=  yIncr;
            
if  (p  >   0 ) {
                
++ x;
                p 
+=  pru;
            }
            
else  p  +=  pr;
        }
    }
    
if  (drw)  this ._mkDiv(x, y,  1 1 );
}

function  _mkOv(left, top, width, height) {
    
var  a  =  ( ++ width)  >>   1 , b  =  ( ++ height)  >>   1 ,
    wod 
=  width  &   1 , hod  =  height  &   1 ,
    cx 
=  left  +  a, cy  =  top  +  b,
    x 
=   0 , y  =  b,
    ox 
=   0 , oy  =  b,
    aa2 
=  (a  *  a)  <<   1 , aa4  =  aa2  <<   1 , bb2  =  (b  *  b)  <<   1 , bb4  =  bb2  <<   1 ,
    st 
=  (aa2  >>   1 *  ( 1   -  (b  <<   1 ))  +  bb2,
    tt 
=  (bb2  >>   1 -  aa2  *  ((b  <<   1 -   1 ),
    w, h;
    
while  (y  >   0 ) {
        
if  (st  <   0 ) {
            st 
+=  bb2  *  ((x  <<   1 +   3 );
            tt 
+=  bb4  *  ( ++ x);
        }
        
else   if  (tt  <   0 ) {
            st 
+=  bb2  *  ((x  <<   1 +   3 -  aa4  *  (y  -   1 );
            tt 
+=  bb4  *  ( ++ x)  -  aa2  *  (((y -- <<   1 -   3 );
            w 
=  x  -  ox;
            h 
=  oy  -  y;
            
if  ((w  &   2 &&  (h  &   2 )) {
                
this ._mkOvQds(cx, cy, x  -   2 , y  +   2 1 1 , wod, hod);
                
this ._mkOvQds(cx, cy, x  -   1 , y  +   1 1 1 , wod, hod);
            }
            
else   this ._mkOvQds(cx, cy, x  -   1 , oy, w, h, wod, hod);
            ox 
=  x;
            oy 
=  y;
        }
        
else  {
            tt 
-=  aa2  *  ((y  <<   1 -   3 );
            st 
-=  aa4  *  ( -- y);
        }
    }
    w 
=  a  -  ox  +   1 ;
    h 
=  (oy  <<   1 +  hod;
    y 
=  cy  -  oy;
    
this ._mkDiv(cx  -  a, y, w, h);
    
this ._mkDiv(cx  +  ox  +  wod  -   1 , y, w, h);
}

function  _mkOv2D(left, top, width, height) {
    
var  s  =   this .stroke;
    width 
+=  s  +   1 ;
    height 
+=  s  +   1 ;
    
var  a  =  width  >>   1 , b  =  height  >>   1 ,
    wod 
=  width  &   1 , hod  =  height  &   1 ,
    cx 
=  left  +  a, cy  =  top  +  b,
    x 
=   0 , y  =  b,
    aa2 
=  (a  *  a)  <<   1 , aa4  =  aa2  <<   1 , bb2  =  (b  *  b)  <<   1 , bb4  =  bb2  <<   1 ,
    st 
=  (aa2  >>   1 *  ( 1   -  (b  <<   1 ))  +  bb2,
    tt 
=  (bb2  >>   1 -  aa2  *  ((b  <<   1 -   1 );

    
if  (s  -   4   <   0   &&  ( ! (s  -   2 ||  width  -   51   >   0   &&  height  -   51   >   0 )) {
        
var  ox  =   0 , oy  =  b,
        w, h,
        pxw;
        
while  (y  >   0 ) {
            
if  (st  <   0 ) {
                st 
+=  bb2  *  ((x  <<   1 +   3 );
                tt 
+=  bb4  *  ( ++ x);
            }
            
else   if  (tt  <   0 ) {
                st 
+=  bb2  *  ((x  <<   1 +   3 -  aa4  *  (y  -   1 );
                tt 
+=  bb4  *  ( ++ x)  -  aa2  *  (((y -- <<   1 -   3 );
                w 
=  x  -  ox;
                h 
=  oy  -  y;

                
if  (w  -   1 ) {
                    pxw 
=  w  +   1   +  (s  &   1 );
                    h 
=  s;
                }
                
else   if  (h  -   1 ) {
                    pxw 
=  s;
                    h 
+=   1   +  (s  &   1 );
                }
                
else  pxw  =  h  =  s;
                
this ._mkOvQds(cx, cy, x  -   1 , oy, pxw, h, wod, hod);
                ox 
=  x;
                oy 
=  y;
            }
            
else  {
                tt 
-=  aa2  *  ((y  <<   1 -   3 );
                st 
-=  aa4  *  ( -- y);
            }
        }
        
this ._mkDiv(cx  -  a, cy  -  oy, s, (oy  <<   1 +  hod);
        
this ._mkDiv(cx  +  a  +  wod  -  s, cy  -  oy, s, (oy  <<   1 +  hod);
    }

    
else  {
        
var  _a  =  (width  -  (s  <<   1 ))  >>   1 ,
        _b 
=  (height  -  (s  <<   1 ))  >>   1 ,
        _x 
=   0 , _y  =  _b,
        _aa2 
=  (_a  *  _a)  <<   1 , _aa4  =  _aa2  <<   1 , _bb2  =  (_b  *  _b)  <<   1 , _bb4  =  _bb2  <<   1 ,
        _st 
=  (_aa2  >>   1 *  ( 1   -  (_b  <<   1 ))  +  _bb2,
        _tt 
=  (_bb2  >>   1 -  _aa2  *  ((_b  <<   1 -   1 ),

        pxl 
=   new  Array(),
        pxt 
=   new  Array(),
        _pxb 
=   new  Array();
        pxl[
0 =   0 ;
        pxt[
0 =  b;
        _pxb[
0 =  _b  -   1 ;
        
while  (y  >   0 ) {
            
if  (st  <   0 ) {
                pxl[pxl.length] 
=  x;
                pxt[pxt.length] 
=  y;
                st 
+=  bb2  *  ((x  <<   1 +   3 );
                tt 
+=  bb4  *  ( ++ x);
            }
            
else   if  (tt  <   0 ) {
                pxl[pxl.length] 
=  x;
                st 
+=  bb2  *  ((x  <<   1 +   3 -  aa4  *  (y  -   1 );
                tt 
+=  bb4  *  ( ++ x)  -  aa2  *  (((y -- <<   1 -   3 );
                pxt[pxt.length] 
=  y;
            }
            
else  {
                tt 
-=  aa2  *  ((y  <<   1 -   3 );
                st 
-=  aa4  *  ( -- y);
            }

            
if  (_y  >   0 ) {
                
if  (_st  <   0 ) {
                    _st 
+=  _bb2  *  ((_x  <<   1 +   3 );
                    _tt 
+=  _bb4  *  ( ++ _x);
                    _pxb[_pxb.length] 
=  _y  -   1 ;
                }
                
else   if  (_tt  <   0 ) {
                    _st 
+=  _bb2  *  ((_x  <<   1 +   3 -  _aa4  *  (_y  -   1 );
                    _tt 
+=  _bb4  *  ( ++ _x)  -  _aa2  *  (((_y -- <<   1 -   3 );
                    _pxb[_pxb.length] 
=  _y  -   1 ;
                }
                
else  {
                    _tt 
-=  _aa2  *  ((_y  <<   1 -   3 );
                    _st 
-=  _aa4  *  ( -- _y);
                    _pxb[_pxb.length 
-   1 ] -- ;
                }
            }
        }

        
var  ox  =   - wod, oy  =  b,
        _oy 
=  _pxb[ 0 ],
        l 
=  pxl.length,
        w, h;
        
for  ( var  i  =   0 ; i  <  l; i ++ ) {
            
if  ( typeof  _pxb[i]  !=   " undefined " ) {
                
if  (_pxb[i]  <  _oy  ||  pxt[i]  <  oy) {
                    x 
=  pxl[i];
                    
this ._mkOvQds(cx, cy, x, oy, x  -  ox, oy  -  _oy, wod, hod);
                    ox 
=  x;
                    oy 
=  pxt[i];
                    _oy 
=  _pxb[i];
                }
            }
            
else  {
                x 
=  pxl[i];
                
this ._mkDiv(cx  -  x, cy  -  oy,  1 , (oy  <<   1 +  hod);
                
this ._mkDiv(cx  +  ox  +  wod, cy  -  oy,  1 , (oy  <<   1 +  hod);
                ox 
=  x;
                oy 
=  pxt[i];
            }
        }
        
this ._mkDiv(cx  -  a, cy  -  oy,  1 , (oy  <<   1 +  hod);
        
this ._mkDiv(cx  +  ox  +  wod, cy  -  oy,  1 , (oy  <<   1 +  hod);
    }
}

function  _mkOvDott(left, top, width, height) {
    
var  a  =  ( ++ width)  >>   1 , b  =  ( ++ height)  >>   1 ,
    wod 
=  width  &   1 , hod  =  height  &   1 , hodu  =  hod  ^   1 ,
    cx 
=  left  +  a, cy  =  top  +  b,
    x 
=   0 , y  =  b,
    aa2 
=  (a  *  a)  <<   1 , aa4  =  aa2  <<   1 , bb2  =  (b  *  b)  <<   1 , bb4  =  bb2  <<   1 ,
    st 
=  (aa2  >>   1 *  ( 1   -  (b  <<   1 ))  +  bb2,
    tt 
=  (bb2  >>   1 -  aa2  *  ((b  <<   1 -   1 ),
    drw 
=   true ;
    
while  (y  >   0 ) {
        
if  (st  <   0 ) {
            st 
+=  bb2  *  ((x  <<   1 +   3 );
            tt 
+=  bb4  *  ( ++ x);
        }
        
else   if  (tt  <   0 ) {
            st 
+=  bb2  *  ((x  <<   1 +   3 -  aa4  *  (y  -   1 );
            tt 
+=  bb4  *  ( ++ x)  -  aa2  *  (((y -- <<   1 -   3 );
        }
        
else  {
            tt 
-=  aa2  *  ((y  <<   1 -   3 );
            st 
-=  aa4  *  ( -- y);
        }
        
if  (drw  &&  y  >=  hodu)  this ._mkOvQds(cx, cy, x, y,  1 1 , wod, hod);
        drw 
=   ! drw;
    }
}

function  _mkRect(x, y, w, h) {
    
var  s  =   this .stroke;
    
this ._mkDiv(x, y, w, s);
    
this ._mkDiv(x  +  w, y, s, h);
    
this ._mkDiv(x, y  +  h, w  +  s, s);
    
this ._mkDiv(x, y  +  s, s, h  -  s);
}

function  _mkRectDott(x, y, w, h) {
    
this .drawLine(x, y, x  +  w, y);
    
this .drawLine(x  +  w, y, x  +  w, y  +  h);
    
this .drawLine(x, y  +  h, x  +  w, y  +  h);
    
this .drawLine(x, y, x, y  +  h);
}

function  jsgFont() {
    
this .PLAIN  =   ' font-weight:normal; ' ;
    
this .BOLD  =   ' font-weight:bold; ' ;
    
this .ITALIC  =   ' font-style:italic; ' ;
    
this .ITALIC_BOLD  =   this .ITALIC  +   this .BOLD;
    
this .BOLD_ITALIC  =   this .ITALIC_BOLD;
}
var  Font  =   new  jsgFont();

function  jsgStroke() {
    
this .DOTTED  =   - 1 ;
}
var  Stroke  =   new  jsgStroke();

function  jsGraphics(cnv, wnd) {
    
this .setColor  =   function (x) {
        
this .color  =  x.toLowerCase();
    };

    
this .setStroke  =   function (x) {
        
this .stroke  =  x;
        
if  ( ! (x  +   1 )) {
            
this .drawLine  =  _mkLinDott;
            
this ._mkOv  =  _mkOvDott;
            
this .drawRect  =  _mkRectDott;
        }
        
else   if  (x  -   1   >   0 ) {
            
this .drawLine  =  _mkLin2D;
            
this ._mkOv  =  _mkOv2D;
            
this .drawRect  =  _mkRect;
        }
        
else  {
            
this .drawLine  =  _mkLin;
            
this ._mkOv  =  _mkOv;
            
this .drawRect  =  _mkRect;
        }
    };

    
this .setPrintable  =   function (arg) {
        
this .printable  =  arg;
        
if  (jg_fast) {
            
this ._mkDiv  =  _mkDivIe;
            
this ._htmRpc  =  arg  ?  _htmPrtRpc : _htmRpc;
        }
        
else   this ._mkDiv  =  arg  ?  _mkDivPrt : _mkDiv;
    };

    
this .setFont  =   function (fam, sz, sty) {
        
this .ftFam  =  fam;
        
this .ftSz  =  sz;
        
this .ftSty  =  sty  ||  Font.PLAIN;
    };

    
this .drawPolyline  =   this .drawPolyLine  =   function (x, y) {
        
for  ( var  i  =  x.length  -   1 ; i; ) {
            
-- i;
            
this .drawLine(x[i], y[i], x[i  +   1 ], y[i  +   1 ]);
        }
    };

    
this .fillRect  =   function (x, y, w, h) {
        
this ._mkDiv(x, y, w, h);
    };

    
this .drawPolygon  =   function (x, y) {
        
this .drawPolyline(x, y);
        
this .drawLine(x[x.length  -   1 ], y[x.length  -   1 ], x[ 0 ], y[ 0 ]);
    };

    
this .drawEllipse  =   this .drawOval  =   function (x, y, w, h) {
        
this ._mkOv(x, y, w, h);
    };

    
this .fillEllipse  =   this .fillOval  =   function (left, top, w, h) {
        
var  a  =  w  >>   1 , b  =  h  >>   1 ,
        wod 
=  w  &   1 , hod  =  h  &   1 ,
        cx 
=  left  +  a, cy  =  top  +  b,
        x 
=   0 , y  =  b, oy  =  b,
        aa2 
=  (a  *  a)  <<   1 , aa4  =  aa2  <<   1 , bb2  =  (b  *  b)  <<   1 , bb4  =  bb2  <<   1 ,
        st 
=  (aa2  >>   1 *  ( 1   -  (b  <<   1 ))  +  bb2,
        tt 
=  (bb2  >>   1 -  aa2  *  ((b  <<   1 -   1 ),
        xl, dw, dh;
        
if  (w)  while  (y  >   0 ) {
            
if  (st  <   0 ) {
                st 
+=  bb2  *  ((x  <<   1 +   3 );
                tt 
+=  bb4  *  ( ++ x);
            }
            
else   if  (tt  <   0 ) {
                st 
+=  bb2  *  ((x  <<   1 +   3 -  aa4  *  (y  -   1 );
                xl 
=  cx  -  x;
                dw 
=  (x  <<   1 +  wod;
                tt 
+=  bb4  *  ( ++ x)  -  aa2  *  (((y -- <<   1 -   3 );
                dh 
=  oy  -  y;
                
this ._mkDiv(xl, cy  -  oy, dw, dh);
                
this ._mkDiv(xl, cy  +  y  +  hod, dw, dh);
                oy 
=  y;
            }
            
else  {
                tt 
-=  aa2  *  ((y  <<   1 -   3 );
                st 
-=  aa4  *  ( -- y);
            }
        }
        
this ._mkDiv(cx  -  a, cy  -  oy, w, (oy  <<   1 +  hod);
    };

    
this .fillArc  =   function (iL, iT, iW, iH, fAngA, fAngZ) {
        
var  a  =  iW  >>   1 , b  =  iH  >>   1 ,
        iOdds 
=  (iW  &   1 |  ((iH  &   1 <<   16 ),
        cx 
=  iL  +  a, cy  =  iT  +  b,
        x 
=   0 , y  =  b, ox  =  x, oy  =  y,
        aa2 
=  (a  *  a)  <<   1 , aa4  =  aa2  <<   1 , bb2  =  (b  *  b)  <<   1 , bb4  =  bb2  <<   1 ,
        st 
=  (aa2  >>   1 *  ( 1   -  (b  <<   1 ))  +  bb2,
        tt 
=  (bb2  >>   1 -  aa2  *  ((b  <<   1 -   1 ),
        
//  Vars for radial boundary lines
        xEndA, yEndA, xEndZ, yEndZ,
        iSects 
=  ( 1   <<  (Math.floor((fAngA  %=   360.0 /   180.0 <<   3 ))
                
|  ( 2   <<  (Math.floor((fAngZ  %=   360.0 /   180.0 <<   3 ))
                
|  ((fAngA  >=  fAngZ)  <<   16 ),
        aBndA 
=   new  Array(b  +   1 ), aBndZ  =   new  Array(b  +   1 );

        
//  Set up radial boundary lines
        fAngA  *=  Math.PI  /   180.0 ;
        fAngZ 
*=  Math.PI  /   180.0 ;
        xEndA 
=  cx  +  Math.round(a  *  Math.cos(fAngA));
        yEndA 
=  cy  +  Math.round( - *  Math.sin(fAngA));
        _mkLinVirt(aBndA, cx, cy, xEndA, yEndA);
        xEndZ 
=  cx  +  Math.round(a  *  Math.cos(fAngZ));
        yEndZ 
=  cy  +  Math.round( - *  Math.sin(fAngZ));
        _mkLinVirt(aBndZ, cx, cy, xEndZ, yEndZ);

        
while  (y  >   0 ) {
            
if  (st  <   0 //  Advance x
            {
                st 
+=  bb2  *  ((x  <<   1 +   3 );
                tt 
+=  bb4  *  ( ++ x);
            }
            
else   if  (tt  <   0 //  Advance x and y
            {
                st 
+=  bb2  *  ((x  <<   1 +   3 -  aa4  *  (y  -   1 );
                ox 
=  x;
                tt 
+=  bb4  *  ( ++ x)  -  aa2  *  (((y -- <<   1 -   3 );
                
this ._mkArcDiv(ox, y, oy, cx, cy, iOdds, aBndA, aBndZ, iSects);
                oy 
=  y;
            }
            
else   //  Advance y
            {
                tt 
-=  aa2  *  ((y  <<   1 -   3 );
                st 
-=  aa4  *  ( -- y);
                
if  (y  &&  (aBndA[y]  !=  aBndA[y  -   1 ||  aBndZ[y]  !=  aBndZ[y  -   1 ])) {
                    
this ._mkArcDiv(x, y, oy, cx, cy, iOdds, aBndA, aBndZ, iSects);
                    ox 
=  x;
                    oy 
=  y;
                }
            }
        }
        
this ._mkArcDiv(x,  0 , oy, cx, cy, iOdds, aBndA, aBndZ, iSects);
        
if  (iOdds  >>   16 //  Odd height
        {
            
if  (iSects  >>   16 //  Start-angle > end-angle
            {
                
var  xl  =  (yEndA  <=  cy  ||  yEndZ  >  cy)  ?  (cx  -  x) : cx;
                
this ._mkDiv(xl, cy, x  +  cx  -  xl  +  (iOdds  &   0xffff ),  1 );
            }
            
else   if  ((iSects  &   0x01 &&  yEndZ  >  cy)
                
this ._mkDiv(cx  -  x, cy, x,  1 );
        }
    };

    
/*  fillPolygon method, implemented by Matthieu Haller.
    This javascript function is an adaptation of the gdImageFilledPolygon for Walter Zorn lib.
    C source of GD 1.8.4 found at http://www.boutell.com/gd/

THANKS to Kirsten Schulz for the polygon fixes!

The intersection finding technique of this code could be improved
    by remembering the previous intertersection, and by using the slope.
    That could help to adjust intersections to produce a nice
    interior_extrema. 
*/
    
this .fillPolygon  =   function (array_x, array_y) {
        
var  i;
        
var  y;
        
var  miny, maxy;
        
var  x1, y1;
        
var  x2, y2;
        
var  ind1, ind2;
        
var  ints;

        
var  n  =  array_x.length;
        
if  ( ! n)  return ;

        miny 
=  array_y[ 0 ];
        maxy 
=  array_y[ 0 ];
        
for  (i  =   1 ; i  <  n; i ++ ) {
            
if  (array_y[i]  <  miny)
                miny 
=  array_y[i];

            
if  (array_y[i]  >  maxy)
                maxy 
=  array_y[i];
        }
        
for  (y  =  miny; y  <=  maxy; y ++ ) {
            
var  polyInts  =   new  Array();
            ints 
=   0 ;
            
for  (i  =   0 ; i  <  n; i ++ ) {
                
if  ( ! i) {
                    ind1 
=  n  -   1 ;
                    ind2 
=   0 ;
                }
                
else  {
                    ind1 
=  i  -   1 ;
                    ind2 
=  i;
                }
                y1 
=  array_y[ind1];
                y2 
=  array_y[ind2];
                
if  (y1  <  y2) {
                    x1 
=  array_x[ind1];
                    x2 
=  array_x[ind2];
                }
                
else   if  (y1  >  y2) {
                    y2 
=  array_y[ind1];
                    y1 
=  array_y[ind2];
                    x2 
=  array_x[ind1];
                    x1 
=  array_x[ind2];
                }
                
else   continue ;

                
//   Modified 11. 2. 2004 Walter Zorn
                 if  ((y  >=  y1)  &&  (y  <  y2))
                    polyInts[ints
++ =  Math.round((y  -  y1)  *  (x2  -  x1)  /  (y2  -  y1)  +  x1);

                
else   if  ((y  ==  maxy)  &&  (y  >  y1)  &&  (y  <=  y2))
                    polyInts[ints
++ =  Math.round((y  -  y1)  *  (x2  -  x1)  /  (y2  -  y1)  +  x1);
            }
            polyInts.sort(_CompInt);
            
for  (i  =   0 ; i  <  ints; i  +=   2 )
                
this ._mkDiv(polyInts[i], y, polyInts[i  +   1 -  polyInts[i]  +   1 1 );
        }
    };

    
this .drawString  =   function (txt, x, y) {
        
this .htm  +=   ' <div style="position:absolute;white-space:nowrap; '   +
            
' left: '   +  x  +   ' px; '   +
            
' top: '   +  y  +   ' px; '   +
            
' font-family: '   +   this .ftFam  +   ' ; '   +
            
' font-size: '   +   this .ftSz  +   ' ; '   +
            
' color: '   +   this .color  +   ' ; '   +   this .ftSty  +   ' "> '   +
            txt 
+
            
' <\/div> ' ;
    };

    
/*  drawStringRect() added by Rick Blommers.
    Allows to specify the size of the text rectangle and to align the
    text both horizontally (e.g. right) and vertically within that rectangle 
*/
    
this .drawStringRect  =   function (txt, x, y, width, halign) {
        
this .htm  +=   ' <div style="position:absolute;overflow:hidden; '   +
            
' left: '   +  x  +   ' px; '   +
            
' top: '   +  y  +   ' px; '   +
            
' width: '   +  width  +   ' px; '   +
            
' text-align: '   +  halign  +   ' ; '   +
            
' font-family: '   +   this .ftFam  +   ' ; '   +
            
' font-size: '   +   this .ftSz  +   ' ; '   +
            
' color: '   +   this .color  +   ' ; '   +   this .ftSty  +   ' "> '   +
            txt 
+
            
' <\/div> ' ;
    };

    
this .drawImage  =   function (imgSrc, x, y, w, h, a) {
        
this .htm  +=   ' <div style="position:absolute; '   +
            
' left: '   +  x  +   ' px; '   +
            
' top: '   +  y  +   ' px; '   +
        
//  w (width) and h (height) arguments are now optional.
         //  Added by Mahmut Keygubatli, 14.1.2008
            (w  ?  ( ' width: '   +  w  +   ' px; ' ) :  '' +
            (h 
?  ( ' height: '   +  h  +   ' px; ' ) :  '' +   ' "> '   +
            
' <img src=" '   +  imgSrc  +   ' " '   +  (w  ?  ( '  width=" '   +  w  +   ' " ' ) :  '' +  (h  ?  ( '  height=" '   +  h  +   ' " ' ) :  '' +  (a  ?  ( '   '   +  a) :  '' +   ' > '   +
            
' <\/div> ' ;
    };

    
this .clear  =   function () {
        
this .htm  =   "" ;
        
if  ( this .cnv)  this .cnv.innerHTML  =   "" ;
    };

    
this ._mkOvQds  =   function (cx, cy, x, y, w, h, wod, hod) {
        
var  xl  =  cx  -  x, xr  =  cx  +  x  +  wod  -  w, yt  =  cy  -  y, yb  =  cy  +  y  +  hod  -  h;
        
if  (xr  >  xl  +  w) {
            
this ._mkDiv(xr, yt, w, h);
            
this ._mkDiv(xr, yb, w, h);
        }
        
else
            w 
=  xr  -  xl  +  w;
        
this ._mkDiv(xl, yt, w, h);
        
this ._mkDiv(xl, yb, w, h);
    };

    
this ._mkArcDiv  =   function (x, y, oy, cx, cy, iOdds, aBndA, aBndZ, iSects) {
        
var  xrDef  =  cx  +  x  +  (iOdds  &   0xffff ), y2, h  =  oy  -  y, xl, xr, w;

        
if  ( ! h) h  =   1 ;
        x 
=  cx  -  x;

        
if  (iSects  &   0xff0000 //  Start-angle > end-angle
        {
            y2 
=  cy  -  y  -  h;
            
if  (iSects  &   0x00ff ) {
                
if  (iSects  &   0x02 ) {
                    xl 
=  Math.max(x, aBndZ[y]);
                    w 
=  xrDef  -  xl;
                    
if  (w  >   0 this ._mkDiv(xl, y2, w, h);
                }
                
if  (iSects  &   0x01 ) {
                    xr 
=  Math.min(xrDef, aBndA[y]);
                    w 
=  xr  -  x;
                    
if  (w  >   0 this ._mkDiv(x, y2, w, h);
                }
            }
            
else
                
this ._mkDiv(x, y2, xrDef  -  x, h);
            y2 
=  cy  +  y  +  (iOdds  >>   16 );
            
if  (iSects  &   0xff00 ) {
                
if  (iSects  &   0x0100 ) {
                    xl 
=  Math.max(x, aBndA[y]);
                    w 
=  xrDef  -  xl;
                    
if  (w  >   0 this ._mkDiv(xl, y2, w, h);
                }
                
if  (iSects  &   0x0200 ) {
                    xr 
=  Math.min(xrDef, aBndZ[y]);
                    w 
=  xr  -  x;
                    
if  (w  >   0 this ._mkDiv(x, y2, w, h);
                }
            }
            
else
                
this ._mkDiv(x, y2, xrDef  -  x, h);
        }
        
else  {
            
if  (iSects  &   0x00ff ) {
                
if  (iSects  &   0x02 )
                    xl 
=  Math.max(x, aBndZ[y]);
                
else
                    xl 
=  x;
                
if  (iSects  &   0x01 )
                    xr 
=  Math.min(xrDef, aBndA[y]);
                
else
                    xr 
=  xrDef;
                y2 
=  cy  -  y  -  h;
                w 
=  xr  -  xl;
                
if  (w  >   0 this ._mkDiv(xl, y2, w, h);
            }
            
if  (iSects  &   0xff00 ) {
                
if  (iSects  &   0x0100 )
                    xl 
=  Math.max(x, aBndA[y]);
                
else
                    xl 
=  x;
                
if  (iSects  &   0x0200 )
                    xr 
=  Math.min(xrDef, aBndZ[y]);
                
else
                    xr 
=  xrDef;
                y2 
=  cy  +  y  +  (iOdds  >>   16 );
                w 
=  xr  -  xl;
                
if  (w  >   0 this ._mkDiv(xl, y2, w, h);
            }
        }
    };

    
this .setStroke( 1 );
    
this .setFont( " verdana,geneva,helvetica,sans-serif " " 12px " , Font.PLAIN);
    
this .color  =   " #000000 " ;
    
this .htm  =   "" ;
    
this .wnd  =  wnd  ||  window;

    
if  ( ! jg_ok) _chkDHTM();
    
if  (jg_ok) {
        
if  (cnv) {
            
if  ( typeof  (cnv)  ==   " string " )
                
this .cont  =  document.all  ?  ( this .wnd.document.all[cnv]  ||   null )
                    : document.getElementById 
?  ( this .wnd.document.getElementById(cnv)  ||   null )
                    : 
null ;
            
else   if  (cnv  ==  window.document)
                
this .cont  =  document.getElementsByTagName( " body " )[ 0 ];
            
//  If cnv is a direct reference to a canvas DOM node
             //  (option suggested by Andreas Luleich)
             else   this .cont  =  cnv;
            
//  Create new canvas inside container DIV. Thus the drawing and clearing
             //  methods won't interfere with the container's inner html.
             //  Solution suggested by Vladimir.
             this .cnv  =   this .wnd.document.createElement( " div " );
            
this .cnv.style.fontSize  =   0 ;
            
this .cont.appendChild( this .cnv);
            
this .paint  =  jg_dom  ?  _pntCnvDom : _pntCnvIe;
        }
        
else
            
this .paint  =  _pntDoc;
    }
    
else
        
this .paint  =  _pntN;

    
this .setPrintable( false );
}

function  _mkLinVirt(aLin, x1, y1, x2, y2) {
    
var  dx  =  Math.abs(x2  -  x1), dy  =  Math.abs(y2  -  y1),
    x 
=  x1, y  =  y1,
    xIncr 
=  (x1  >  x2)  ?   - 1  :  1 ,
    yIncr 
=  (y1  >  y2)  ?   - 1  :  1 ,
    p,
    i 
=   0 ;
    
if  (dx  >=  dy) {
        
var  pr  =  dy  <<   1 ,
        pru 
=  pr  -  (dx  <<   1 );
        p 
=  pr  -  dx;
        
while  (dx  >   0 ) {
            
-- dx;
            
if  (p  >   0 )     //   Increment y
            {
                aLin[i
++ =  x;
                y 
+=  yIncr;
                p 
+=  pru;
            }
            
else  p  +=  pr;
            x 
+=  xIncr;
        }
    }
    
else  {
        
var  pr  =  dx  <<   1 ,
        pru 
=  pr  -  (dy  <<   1 );
        p 
=  pr  -  dy;
        
while  (dy  >   0 ) {
            
-- dy;
            y 
+=  yIncr;
            aLin[i
++ =  x;
            
if  (p  >   0 )     //   Increment x
            {
                x 
+=  xIncr;
                p 
+=  pru;
            }
            
else  p  +=  pr;
        }
    }
    
for  ( var  len  =  aLin.length, i  =  len  -  i; i; )
        aLin[len 
-  (i -- )]  =  x;
};

function  _CompInt(x, y) {
    
return  (x  -  y);
}

 

 CSS样式 

 

ExpandedBlockStart.gif 代码
<style type="text/css">
        .mybox
        
{
            position
:  relative ;
            left
:  800px ;
            top
:  20px ;
        
}
        
        #header
{

 background-color 
: Red  ;
    width
: 955px ;
    height
: 223px ;
}
#content
{
    background-color 
: Green  ;
    width
: 955px ;
    height
: 223px ;
   background-repeat
: repeat-x ;
}



    </style>

JS脚本暂不公开

Html

ExpandedBlockStart.gif 代码
< body onload = " draw() " >
    
< center >
   

 
    
< div style  = " top:0px "  id = " header " >
        
< div id = " test "  onmousemove = " MouseMove(this) "  onmousedown = " startDrag(this) "  onmouseup = " endDrag(this) "
            style
= " border: 1px solid #000000; background: #FCFCFC; width: 200px; height: 200px;
            position: absolute; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='Images/Snap3.bmp', sizingMethod='scale');
            top: 15px; left: 107px;
" >
            
<%-- 长高为300时 --%>
            
<%--    < div id = " div2 "  style = " position: absolute;  width: 40px;  top: 250px;  left=10px;  height: 150px;  z-index: 1;  background-color: " >
              
< input type = " text "  id = " nTxt "  value = " 40 "  style = " width: 20px; background: red " >
            
< / div>--%>
             <%-- 长高为200时 --%>
            
< div id = " div2 "  style = " position: absolute; width: 40px; top: 170px; left=10px; height: 150px; z-index: 1; background-color:  " >
                
< input type = " text "  id = " nTxt "  value = " 40 "  style = " width: 20px; background: red " >
            
< / div>
         < / div>
        
        
        
< div id = " Div1 "  onmousemove = " MouseMove(this) "  onmousedown = " startDrag(this) "  onmouseup = " endDrag(this) "
            style
= " border: 1px solid #000000; background: #FCFCFC; width: 200px; height: 200px;
            position: absolute; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='Images/Snap3.bmp', sizingMethod='scale');
            top: 15px; left: 307px;
" >
            
<%-- 长高为200时 --%>
            
< div id = " div3 "  style = " position: absolute; width: 40px; top: 170px; left=10px; height: 150px;
                left: 104px;
" >
                
< input type = " text "  id = " Text1 "  value = " 40 "  style = " width: 20px; background: red " >
            
< / div>
         < / div>
        
        
        
< div id = " Div4 "  onmousemove = " MouseMove(this) "  onmousedown = " startDrag(this) "  onmouseup = " endDrag(this) "
            style
= " border: 1px solid #000000; background: #FCFCFC; width: 200px; height: 200px;
            position: absolute; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='Images/Snap3.bmp', sizingMethod='scale');
            top: 15px; left: 507px;
" >
            
<%-- 长高为200时 --%>
            
< div id = " div5 "  style = " position: absolute; width: 40px; top: 170px; left=10px; height: 150px;
                z-index: 1; background-color: 
" >
                
< input type = " text "  id = " Text2 "  value = " 40 "  style = " width: 20px; background: red " >
            
< / div>
         < / div>


 
< div id = " Div6 "  onmousemove = " MouseMove(this) "  onmousedown = " startDrag(this) "  onmouseup = " endDrag(this) "
            style
= " border: 1px solid #000000; background: #FCFCFC; width: 200px; height: 200px;
            position: absolute; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='Images/Snap3.bmp', sizingMethod='scale');
            top: 15px; left: 707px;
" >
            
<%-- 长高为200时 --%>
            
< div id = " div7 "  style = " position: absolute; width: 40px; top: 170px; left=10px; height: 150px;
                z-index: 1; background-color: 
" >
                
< input type = " text "  id = " Text3 "  value = " 40 "  style = " width: 20px; background: red " >
            
< / div>
         < / div>
         < / div> 
          < / center>
     < div style = " position: absolute; width: 40px; top: 500px; left=10px;   " >
    
< input name = " txt "  type = " text "  width = " 40 "  value = " 40 "   / >
     < input type = " button "  value = " 设置 "  onclick = " draw() "   / >
     < input type = " button "  value = " 清除 "  onclick = " clearLine() "   / >
    
    
< / div>
< / body>


效果图

 

 目前只完成了第一个。方法一次类推就可以了。由于各方面的原因暂不公开部分JS脚本。望大家谅解。

 

 

 

 


 

转载于:https://www.cnblogs.com/liaoqiang/archive/2011/01/08/1930758.html

这篇关于管理驾驶舱 之仪表盘的设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/608398

相关文章

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

Mysql中的用户管理实践

《Mysql中的用户管理实践》:本文主要介绍Mysql中的用户管理实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录13. 用户管理13.1 用户 13.1.1 用户信息 13.1.2 创建用户 13.1.3 删除用户 13.1.4 修改用户

linux服务之NIS账户管理服务方式

《linux服务之NIS账户管理服务方式》:本文主要介绍linux服务之NIS账户管理服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、所需要的软件二、服务器配置1、安装 NIS 服务2、设定 NIS 的域名 (NIS domain name)3、修改主

Python+PyQt5开发一个Windows电脑启动项管理神器

《Python+PyQt5开发一个Windows电脑启动项管理神器》:本文主要介绍如何使用PyQt5开发一款颜值与功能并存的Windows启动项管理工具,不仅能查看/删除现有启动项,还能智能添加新... 目录开篇:为什么我们需要启动项管理工具功能全景图核心技术解析1. Windows注册表操作2. 启动文件

gradle第三方Jar包依赖统一管理方式

《gradle第三方Jar包依赖统一管理方式》:本文主要介绍gradle第三方Jar包依赖统一管理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景实现1.顶层模块build.gradle添加依赖管理插件2.顶层模块build.gradle添加所有管理依赖包

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指