WPF程式設計,羅盤時鐘一種實現方式。

2021-09-25 03:53:04 字數 3319 閱讀 5555

如果所示,是最終效果。此實現**參考了分享的方法。

直接複製的源**直接執行有問題,在此基礎上稍加更改到現在的效果。新建wpf專案,直接複製後,更改一下命名空間就可以直接執行了。注意.net環境是4.5

namespace clock_temp

/// /// x軸的中心位置

///

private double centerpixtox => this.actualwidth / 2;

/// /// y軸的中心位置

///

private double centerpixtoy => this.actualheight / 2;

/// /// 秒

///

private canvas canvashour = null;

/// /// 分

///

private canvas canvasminute = null;

/// /// 時

///

private canvas canvassecond = null;

/// /// ui更新執行緒

///

private thread thread = null;

/// /// 快取時的顯示控制項

///

private textblock blockhour = null;

/// /// 快取分的顯示控制項

///

private textblock blockminute = null;

/// /// 快取秒的顯示控制項

///

private textblock blocksecond = null;

/// /// 新增控制項

///

private void add(addtype type)

var angle = 360 / count;//角度

var x = centerpixtox - offset;//起始位置

var y = centerpixtoy - offset;

for (int i = 0; i < count; i++)";}

else";}

t.verticalalignment = verticalalignment.stretch;

t.horizontalalignment = horizontalalignment.stretch;

t.tag = i;

t.fontsize = 12;

t.foreground = new solidcolorbrush((color)colorconverter.convertfromstring("#7d7d7d"));

canvas.children.add(t);

var sinv = math.sin((90 - angle * i) * (math.pi / 180));

var cosv = math.cos((90 - angle * i) * (math.pi / 180));

var a = centerpixtoy - y * sinv;

var b = centerpixtox + y * cosv;

canvas.setleft(t, b);

canvas.settop(t, a);

//設定角度

rotatetransform r = new rotatetransform();

r.centerx = centerpixtox;

r.centery = centerpixtoy;

r.angle = angle * i - 90;

t.rendertransform = r;

if (i == time)}}

grid.children.add(canvas);

//獲取當前時間,旋轉對應的角度

rotatetransform rtf = new rotatetransform();

rtf.centerx = centerpixtox;

rtf.centery = centerpixtoy;

rtf.angle = angletime;

canvas.rendertransform = rtf;

}/// /// 渲染時鐘

///

public void show()

/// /// 生成名稱

///

private void addname()

/// /// ui更新執行緒

///

private void threadmethod()

//處理分

if (s == 0 && (int)blockminute.tag != m)

//處理秒

setui(canvassecond, s);

});thread.sleep(1000);}}

/// /// 更新ui

///

///

///

///

private void setui(canvas can, int tag)

else if (type == addtype.hour)

else

rtf.beginanimation(rotatetransform.angleproperty, db);

}else}}

/// /// 秒 動畫完成時

///

///

///

private void dbsecond_completed(object sender, eventargs e)

/// /// 時 動畫完成時

///

///

///

private void dbhour_completed(object sender, eventargs e)

/// /// 分 動畫完成時

///

///

///

private void dbminute_completed(object sender, eventargs e)

/// /// 釋放

///

public void dispose()

/// /// 新增型別

///

public enum addtype}}

ssh框架的一種實現方式

公司使用的是 ssh框架,用 生成工具生成從 dao到 service 的所有 和配置檔案,使用 spring 框架對hibernate 進行事務管理,struts 自己管理自己的元件,spring 管理從service到vo 物件的元件,在 struts 的action 通過來獲取 spring ...

attention的一種實現方式記錄

思想是當前資訊ht與前文多個資訊hs進行比對計算,得到對各個前文資訊hs應該有多少關注度,即at 利用at加權相應的hs,並累加所有加權後的前文資訊,得到綜合前文資訊ct,將其與當前資訊ht進行拼接組合進行 上述流程計算方式如下 這裡的注意力其實可以認為指的是at,因此需要關注at如何計算 上述公式...

OC Singleton的一種簡便實現方式

static dispatch queue t xml request operation processing queue return af xml request operation processing queue 通過dispatch once執行一次來保證af xml request o...