⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form2.cs

📁 该电子时钟是基于windows mobile5.0 的软件
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using System.IO;
using PlatformAPI;

namespace LedClock
{
    public partial class Form2 : Form
    {
        static string path = "";
        static IImagingFactory factory;
        Graphics gxBuffer;
        Bitmap offBitmap;

        //Graphics gxClock;
        Graphics gxC;
        Bitmap mClock;

        string skin = "bg_Vista_flower";
        public Form2()
        {
            InitializeComponent();
            path = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase); 
            factory = (IImagingFactory)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("327ABDA8-072B-11D3-9D7B-0000F81EF32E")));
            offBitmap = new Bitmap(234, 60);
            gxBuffer = Graphics.FromImage(offBitmap);
            gxBuffer.Clear(this.BackColor);
            
            mClock = new Bitmap(130, 130);
            gxC = Graphics.FromImage(mClock);
            gxC.Clear(this.BackColor);
        }
        public static IImage GetImage(string num)
        {
            IImage image;
            try
            {
                //factory.CreateImageFromFile(path + @"\Led\" + num + ".png", out image);
                MemoryStream strm = (MemoryStream)Assembly.GetExecutingAssembly().GetManifestResourceStream("LedClock.Led." + num + ".png");
                byte[] pbBuf = strm.GetBuffer();
                uint cbBuf = (uint)strm.Length;
                factory.CreateImageFromBuffer(pbBuf, cbBuf, BufferDisposalFlag.BufferDisposalFlagNone, out image);
                return image;
            }
            catch
            {

                //MessageBox.Show(num);
                return null;
            }
        }
        private void Form2_Load(object sender, EventArgs e)
        {

        }
        private void Form2_Paint(object sender, PaintEventArgs e)
        {
            
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            gxBuffer.Clear(this.BackColor);

            IntPtr hdcDest = gxBuffer.GetHdc();
            try
            {
                Rectangle dstRect = new Rectangle(0, 0, 234, 60);
                GetImage("11").Draw(hdcDest, ref dstRect, IntPtr.Zero);
                gxBuffer.ReleaseHdc(hdcDest);
                DateTime now = DateTime.Now;
                string hour = now.Hour.ToString();
                string minute = now.Minute.ToString();
                string second = now.Second.ToString();
                label1.Text = now.ToLongTimeString();
                if (hour.Length == 1)
                {
                    hdcDest = gxBuffer.GetHdc();
                    dstRect = new Rectangle(10, 0, 36, 60);
                    GetImage("0").Draw(hdcDest, ref dstRect, IntPtr.Zero);
                    gxBuffer.ReleaseHdc(hdcDest);

                    hdcDest = gxBuffer.GetHdc();
                    dstRect = new Rectangle(36, 0, 62, 60);
                    GetImage(hour).Draw(hdcDest, ref dstRect, IntPtr.Zero);
                    gxBuffer.ReleaseHdc(hdcDest);
                }
                else
                {
                    hdcDest = gxBuffer.GetHdc();
                    dstRect = new Rectangle(10, 0, 36, 60);
                    GetImage(hour.Substring(0, 1)).Draw(hdcDest, ref dstRect, IntPtr.Zero);
                    gxBuffer.ReleaseHdc(hdcDest);

                    hdcDest = gxBuffer.GetHdc();
                    dstRect = new Rectangle(36, 0, 62, 60);
                    GetImage(hour.Substring(1, 1)).Draw(hdcDest, ref dstRect, IntPtr.Zero);
                    gxBuffer.ReleaseHdc(hdcDest);
                }
                hdcDest = gxBuffer.GetHdc();
                dstRect = new Rectangle(62, 0, 69, 60);
                GetImage("10").Draw(hdcDest, ref dstRect, IntPtr.Zero);
                gxBuffer.ReleaseHdc(hdcDest);
                if (minute.Length == 1)
                {
                    hdcDest = gxBuffer.GetHdc();
                    dstRect = new Rectangle(69, 0, 95, 60);
                    GetImage("0").Draw(hdcDest, ref dstRect, IntPtr.Zero);
                    gxBuffer.ReleaseHdc(hdcDest);

                    hdcDest = gxBuffer.GetHdc();
                    dstRect = new Rectangle(95, 0, 121, 60);
                    GetImage(minute).Draw(hdcDest, ref dstRect, IntPtr.Zero);
                    gxBuffer.ReleaseHdc(hdcDest);
                }
                else
                {
                    hdcDest = gxBuffer.GetHdc();
                    dstRect = new Rectangle(69, 0, 95, 60);
                    GetImage(minute.Substring(0, 1)).Draw(hdcDest, ref dstRect, IntPtr.Zero);
                    gxBuffer.ReleaseHdc(hdcDest);

                    hdcDest = gxBuffer.GetHdc();
                    dstRect = new Rectangle(95, 0, 121, 60);
                    GetImage(minute.Substring(1, 1)).Draw(hdcDest, ref dstRect, IntPtr.Zero);
                    gxBuffer.ReleaseHdc(hdcDest);
                }
                hdcDest = gxBuffer.GetHdc();
                dstRect = new Rectangle(121, 0, 128, 60);
                GetImage("10").Draw(hdcDest, ref dstRect, IntPtr.Zero);
                gxBuffer.ReleaseHdc(hdcDest);
                if (second.Length == 1)
                {
                    hdcDest = gxBuffer.GetHdc();
                    dstRect = new Rectangle(128, 0, 154, 60);
                    GetImage("0").Draw(hdcDest, ref dstRect, IntPtr.Zero);
                    gxBuffer.ReleaseHdc(hdcDest);

                    hdcDest = gxBuffer.GetHdc();
                    dstRect = new Rectangle(154, 0, 180, 60);
                    GetImage(second).Draw(hdcDest, ref dstRect, IntPtr.Zero);
                    gxBuffer.ReleaseHdc(hdcDest);
                }
                else
                {
                    hdcDest = gxBuffer.GetHdc();
                    dstRect = new Rectangle(128, 0, 154, 60);
                    GetImage(second.Substring(0, 1)).Draw(hdcDest, ref dstRect, IntPtr.Zero);
                    gxBuffer.ReleaseHdc(hdcDest);

                    hdcDest = gxBuffer.GetHdc();
                    dstRect = new Rectangle(154, 0, 180, 60);
                    GetImage(second.Substring(1, 1)).Draw(hdcDest, ref dstRect, IntPtr.Zero);
                    gxBuffer.ReleaseHdc(hdcDest);
                }

                gxBuffer.DrawImage(offBitmap, 0, 0);

                pictureBox1.Image = offBitmap;
            }
            catch (Exception ex)
            {
                gxBuffer.ReleaseHdc(hdcDest);
                timer1.Enabled = false;
                button1.Enabled = true;
                //MessageBox.Show(ex.ToString());
            }
        }

        public static IImage GetClockImage(string str)
        {
            IImage image;
            try
            {
                //factory.CreateImageFromFile(path + @"\Clock\" + str + ".png", out image);
                MemoryStream strm = (MemoryStream)Assembly.GetExecutingAssembly().GetManifestResourceStream("LedClock.Clock."+str+".png");
                byte[] pbBuf = strm.GetBuffer();
                uint cbBuf = (uint)strm.Length;
                factory.CreateImageFromBuffer(pbBuf, cbBuf, BufferDisposalFlag.BufferDisposalFlagNone, out image);
                return image;
            }
            catch
            {
                
                //MessageBox.Show(num);
                return null;
            }
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            gxC.Clear(this.BackColor);
            IntPtr hdcDest = gxC.GetHdc();
            try
            {
                
                Rectangle dstRect = new Rectangle(0, 0, 130, 130);
                GetClockImage(skin).Draw(hdcDest, ref dstRect, IntPtr.Zero);
                gxC.ReleaseHdc(hdcDest);
                DateTime now = DateTime.Now;
                int iHour = now.Hour;
                string minute = now.Minute.ToString();
                int iMinute = now.Minute;
                string second = now.Second.ToString();
                label1.Text = now.ToLongTimeString();
                if (iHour > 12)
                {
                    iHour = iHour - 12;
                }
                if (iHour == 0)
                {
                    iHour = 12;
                }
                iMinute = iMinute / 12;
                hdcDest = gxC.GetHdc();
                dstRect = new Rectangle(0, 0, 130, 130);
                GetClockImage("h_" + iHour.ToString() + iMinute.ToString()).Draw(hdcDest, ref dstRect, IntPtr.Zero);
                gxC.ReleaseHdc(hdcDest);


                hdcDest = gxC.GetHdc();
                dstRect = new Rectangle(0, 0, 130, 130);
                GetClockImage("m_" + minute).Draw(hdcDest, ref dstRect, IntPtr.Zero);
                gxC.ReleaseHdc(hdcDest);

                hdcDest = gxC.GetHdc();
                dstRect = new Rectangle(0, 0, 130, 130);
                GetClockImage("s_" + second).Draw(hdcDest, ref dstRect, IntPtr.Zero);
                gxC.ReleaseHdc(hdcDest);

                gxC.DrawImage(mClock, 0, 0);

                pictureBox2.Image = mClock;
            }
            catch (Exception ex)
            {
                gxC.ReleaseHdc(hdcDest);
                timer2.Enabled = false;
                button2.Enabled = true;
                //MessageBox.Show(ex.ToString());
            }
        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rd = (RadioButton)sender;
            if (rd.Checked)
            {
                skin = "bg_" + rd.Text;
            }
        }

        private void menuItem1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Refresh();
            timer1.Enabled = true;
            button1.Enabled = false;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Refresh();
            timer2.Enabled = true;
            button2.Enabled = false;

        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -