最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# GDI+實現(xiàn)時鐘表盤

 更新時間:2022年06月13日 16:28:33   作者:瀛海的鯤  
這篇文章主要為大家詳細介紹了C# GDI+實現(xiàn)時鐘表盤,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C# GDI+實現(xiàn)時鐘表盤的具體代碼,供大家參考,具體內(nèi)容如下

一、設(shè)計如下圖界面

按鍵“打開時鐘”按下后會出現(xiàn)表盤,按鍵“退出”按下后會關(guān)閉頁面。

二、多線程初始化和函數(shù)初始化

public Form1()
? ? ? ? {
? ? ? ? ? ? InitializeComponent();
? ? ? ? ? ? generateBtn();
? ? ? ? ? ? Control.CheckForIllegalCrossThreadCalls = false;
? ? ? ? }

對按鍵 重命名

void generateBtn()
?{
? ? ? ? ? ? Button bt1 = button1;
? ? ? ? ? ? bt1.Text = "打開時鐘";
? ? ? ? ? ? Button bt2 = button2;
? ? ? ? ? ? bt2.Text = "退出";
}

三、按鍵“打開時鐘”按下

打開多線程,運行時鐘相關(guān)程序。

private void button1_Click(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? ThreadStart thStart = new ThreadStart(Start);
? ? ? ? ? ? Thread thread = new Thread(thStart);
? ? ? ? ? ? thread.Priority = ThreadPriority.Highest;
? ? ? ? ? ? thread.IsBackground = true; //關(guān)閉窗體繼續(xù)執(zhí)行
? ? ? ? ? ? thread.Start();
? ? ? ? }

四、時鐘主函數(shù)

給定表盤圓心坐標(biāo)和半徑,初始化一些畫筆顏色和畫刷大小以及一些變量,通過半徑和圓心計算表盤上各點的坐標(biāo),讀取并記錄電腦上的時間戳,計算時針分針秒針的角度,通過之前計算結(jié)果繪制表盤。

每隔一秒(檢測讀取到的時、分、秒發(fā)生變化)擦除一遍頁面,重新計算坐標(biāo)點,重新繪制新的表盤。

private void Start()
? ? ? ? {
?
? ? ? ? ? ? var graph = this.pictureBox1.CreateGraphics();
?
? ? ? ? ? ? double[] Sin = new double[60];
? ? ? ? ? ? double[] Cos = new double[60];
? ? ? ? ? ? float[] x = new float[60];
? ? ? ? ? ? float[] y = new float[60];
? ? ? ? ? ? float[] x1 = new float[60];
? ? ? ? ? ? float[] y1 = new float[60];
? ? ? ? ? ? float[] x2 = new float[60];
? ? ? ? ? ? float[] y2 = new float[60];
? ? ? ? ? ? float[] x3 = new float[60];
? ? ? ? ? ? float[] y3 = new float[60];
? ? ? ? ? ? float[] x4 = new float[60];
? ? ? ? ? ? float[] y4 = new float[60];
? ? ? ? ? ? float x5 =0;
? ? ? ? ? ? float y5 =0;
? ? ? ? ? ? float r0 = 0;
?
?
? ? ? ? ? ? string tradeTime = DateTime.Now.ToString("hhmmss",System.Globalization.DateTimeFormatInfo.InvariantInfo);
? ? ? ? ? ? var pencoler1 = new Pen(Color.Red);
? ? ? ? ? ? var pencoler2 = new Pen(Color.Yellow);
? ? ? ? ? ? var pencoler3 = new Pen(Color.Black);
? ? ? ? ? ? var pensize = new Pen(Color.Black, 3);
? ? ? ? ? ? var pensize1 = new Pen(Color.Red, 2);
? ? ? ? ? ? var pensize2 = new Pen(Color.Black, 4);
?
? ? ? ? ? ? int i;
? ? ? ? ? ? int z = 0;
? ? ? ? ? ? int x0 = 500;
? ? ? ? ? ? int y0 = 300;
? ? ? ? ? ? int r = 300;
? ? ? ? ? ? int sec, min, hour;
? ? ? ? ? ? int secn = 0, minn = 0, hourn = 0;
? ? ? ? ? ? int Time;
?
? ? ? ? ? ? for (i = 0; i < 60; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? //if (i == 0 || i == 30 || i == 15 || i == 45) { ?continue; }
? ? ? ? ? ? ? ? double d = (((i * 6) - 90) * 3.1415) / 180;
? ? ? ? ? ? ? ? Sin[i] = Math.Sin(d);
? ? ? ? ? ? ? ? Cos[i] = Math.Cos(d);
? ? ? ? ? ? ? ? y[i] = (float)(Sin[i] * r) + y0;
? ? ? ? ? ? ? ? x[i] = (float)(Cos[i] * r) + x0;
? ? ? ? ? ? ? ? x1[i] = x[i] - (x[i] - x0) / 10;
? ? ? ? ? ? ? ? y1[i] = y[i] - (y[i] - y0) / 10;
? ? ? ? ? ? ? ? x2[i] = x[i] - (x[i] - x0) / 7 - r / 20;
? ? ? ? ? ? ? ? y2[i] = y[i] - (y[i] - y0) / 7 - r / 20;
? ? ? ? ? ? ? ? x3[i] = x[i] - (x[i] - x0) / 20;
? ? ? ? ? ? ? ? y3[i] = y[i] - (y[i] - y0) / 20;
? ? ? ? ? ? ? ? x4[i] = x[i] - (x[i] - x0) / 2;
? ? ? ? ? ? ? ? y4[i] = y[i] - (y[i] - y0) / 2;
? ? ? ? ? ? ? ? x5 = x0 - r / 40;
? ? ? ? ? ? ? ? y5 = y0 - r / 40;
? ? ? ? ? ? ? ? r0 = r / 20;
?
? ? ? ? ? ? }
?
? ? ? ? ? ? Brush penbrush = new SolidBrush(Color.Black);
? ? ? ? ? ? Font penfont = new Font("華文行楷", r / 20);
?
? ? ? ? ? ? for (; ; )
? ? ? ? ? ? {
? ? ? ? ? ? ? ? tradeTime = DateTime.Now.ToString("hhmmss", System.Globalization.DateTimeFormatInfo.InvariantInfo);
? ? ? ? ? ? ? ? Time = int.Parse(tradeTime);
? ? ? ? ? ? ? ? sec = Time % 100;
? ? ? ? ? ? ? ? min = Time / 100 % 100;
? ? ? ? ? ? ? ? hour = Time / 10000;
? ? ? ? ? ? ? ? if (hour == 12) { hour = 0; }
?
? ? ? ? ? ? ? ? if (secn != sec || minn != min || hourn != hour)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? //MessageBox.Show(sec.ToString());
? ? ? ? ? ? ? ? ? ? graph.Clear(this.BackColor);
? ? ? ? ? ? ? ? ? ? //graph.DrawEllipse(pencoler2, x0 - r, y0 - r, 2*r, 2*r);
?
? ? ? ? ? ? ? ? ? ? for (i = 0; i < 60; i++)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? if (i % 5 == 0)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? z = i / 5;
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (z == 0) z = 12;
? ? ? ? ? ? ? ? ? ? ? ? ? ? graph.DrawLine(pensize, x[i], y[i],x1[i],y1[i]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? graph.DrawString(z.ToString(), penfont, penbrush, x2[i], y2[i]);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? graph.DrawLine(pencoler3, x[i], y[i], x3[i], y3[i]);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? graph.DrawLine(pensize1, x0, y0, x[sec], y[sec]);
? ? ? ? ? ? ? ? ? ? graph.DrawLine(pensize2, x0, y0, x[min], y[min]);
? ? ? ? ? ? ? ? ? ? graph.DrawLine(pensize2, x0, y0, x4[hour*5], y4[hour*5]);
? ? ? ? ? ? ? ? ? ? //graph.DrawPie(pencoler2, x0-r, y0-r, 2*r, 2*r, sec * 6-90, 1);
? ? ? ? ? ? ? ? ? ? //graph.DrawPie(pencoler3, x0-r , y0-r , r*2, r*2, min * 6-90, 1);
? ? ? ? ? ? ? ? ? ? //graph.DrawPie(pencoler3, x0-r/2 , y0-r/2 , r, r, hour*30-90, 2);
?
? ? ? ? ? ? ? ? ? ? secn = sec;
? ? ? ? ? ? ? ? ? ? minn = min;
? ? ? ? ? ? ? ? ? ? hourn = hour;
? ? ? ? ? ? ? ? ? ? graph.FillEllipse(new SolidBrush(Color.Yellow), x5 , y5 , r0, r0);
? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }

五、“退出”按鍵按下后

得益于多線程的使用,在表盤一直處于死循環(huán)監(jiān)測時間變化的同時,依然能檢測到Button的按下。
“退出”按下后,退出頁面。

private void button2_Click(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? Application.Exit();
? ? ? ? }

六、表盤上各點的計算

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#實現(xiàn)的微信網(wǎng)頁授權(quán)操作邏輯封裝示例

    C#實現(xiàn)的微信網(wǎng)頁授權(quán)操作邏輯封裝示例

    這篇文章主要介紹了C#實現(xiàn)的微信網(wǎng)頁授權(quán)操作邏輯封裝,分析了微信網(wǎng)頁授權(quán)操作的原理、步驟并給出了C#實現(xiàn)的網(wǎng)頁授權(quán)操作邏輯封裝類,需要的朋友可以參考下
    2016-10-10
  • 淺談Silverlight 跨線程的使用詳解

    淺談Silverlight 跨線程的使用詳解

    本篇文章是對Silverlight跨線程的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C#中字符串拼接方式及其性能分析對比

    C#中字符串拼接方式及其性能分析對比

    在C#編程中字符串拼接是一種常見且基礎(chǔ)的操作,廣泛應(yīng)用于各種場景,如動態(tài)生成SQL查詢,構(gòu)建日志信息等,本文為大家整理了C#中字符串拼接的常見6種方式及其使用BenchmarkDotNet進行性能分析對比,需要的可以參考下
    2024-12-12
  • C#實現(xiàn)rabbitmq 延遲隊列功能實例代碼

    C#實現(xiàn)rabbitmq 延遲隊列功能實例代碼

    本篇文章主要介紹了C#實現(xiàn)rabbitmq 延遲隊列功能實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • c#異步task示例分享(異步操作)

    c#異步task示例分享(異步操作)

    這篇文章主要介紹了c#異步task示例(異步操作),需要的朋友可以參考下
    2014-03-03
  • c#基于NVelocity實現(xiàn)代碼生成

    c#基于NVelocity實現(xiàn)代碼生成

    這篇文章主要介紹了c#基于NVelocity實現(xiàn)代碼生成的方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-01-01
  • C#合并BitMap圖像生成超大bitmap

    C#合并BitMap圖像生成超大bitmap

    當(dāng)兩個圖像合并的時候,以簡單的使用gdi+,當(dāng)需要將許多bitmap合并時就會造成寬度過大,那么怎么實現(xiàn)C#合并BitMap圖像,本文就詳細的介紹一下
    2021-11-11
  • C#調(diào)用Python腳本的簡單示例

    C#調(diào)用Python腳本的簡單示例

    這篇文章主要為大家詳細介紹了C#調(diào)用Python腳本的簡單示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • C# 填充Excel圖表、圖例背景色的實例代碼

    C# 填充Excel圖表、圖例背景色的實例代碼

    下面的內(nèi)容將分別介紹通過C#來設(shè)置Excel中圖表背景色、以及圖表中的圖例背景色的方法,需要的朋友可以參考下
    2019-04-04
  • C# 中如何使用Thread

    C# 中如何使用Thread

    這篇文章主要介紹了C# 中使用 Thread的方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-01-01

最新評論

睢宁县| 博罗县| 涞水县| 广平县| 田阳县| 长岭县| 北流市| 界首市| 龙岩市| 集安市| 双城市| 余江县| 蚌埠市| 滦平县| 丹凤县| 凤翔县| 郴州市| 奉贤区| 长春市| 皮山县| 华池县| 驻马店市| 印江| 荔波县| 武穴市| 玛沁县| 辽阳市| 南平市| 罗平县| 莲花县| 甘孜县| 西乌珠穆沁旗| 河津市| 电白县| 海南省| 涿州市| 七台河市| 鹤庆县| 资中县| 波密县| 临洮县|