OneDay “螢幕任務”小軟體 TaskScreen_080408

來源:互聯網
上載者:User
     軟體沒什麼就是,花點時間寫點代碼省的手生;特此建立 “OneDay 小軟體”個人分類,都是一些一天左右可以做出來的東西、主要為了系統練習一些技術,
軟體都是半成品,各位看管不要挑剔就好;代碼可以拿去隨便用,如果您從My Code中學習到了東西或找到了靈感來這裡說聲謝謝或頂一下就好了。

軟體:
   
    點擊看大圖

紅色的字就是軟體的效果了、工作列中 FoxMail 前面的表徵圖就是本程式;程式沒有什麼高深技術就是用了幾個API;技術基本和上一次發的“CS忙狙器”類似說明如下
程式中用到的API//取得繪圖控制代碼
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr GetDC(IntPtr hWnd);

//釋放繪圖控制代碼
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);

//重新整理地區
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern bool InvalidateRect(IntPtr hWnd, IntPtr lpRect, bool bErase);

應用程式初始化:
    隱藏視窗,這裡可以使視窗根本就不出現protected override CreateParams CreateParams
{
    get
    {
        base.Visible = false; //隱藏視窗
        return base.CreateParams;
    }
}

程式繪圖流程很簡單:
     取得螢幕繪圖控制代碼 GetGC -> 建立 Graphics -> 向螢幕上寫字 -> 釋放繪圖控制代碼 ReleaseDCprivate void timer1_Tick(object sender, EventArgs e)
{
    if (swTick == false)
    {
        swTick = true;
        try
        {
            IntPtr hdc;
            
            System.Drawing.Graphics g;
            
            int x = Settings.Default.TextXY.X;
            int y = Settings.Default.TextXY.Y;
            
            Rectangle workingArea =  Screen.PrimaryScreen.WorkingArea;
            
            Rectangle TaskDrawArea = new Rectangle(x, y, workingArea.Width - x, workingArea.Height - y);
            int textOpacity = 50;
            
            hdc = GetDC(IntPtr.Zero); //1) 參數 0 就是取得整個螢幕的GC控制代碼
                                
            using (g = System.Drawing.Graphics.FromHdc(hdc))
            {
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit; //設定利用 ClearType
                
                Color clr = Color.FromArgb(textOpacity, Settings.Default.TextColor);

                    
                Font f = Settings.Default.TextFont;
                
                using (SolidBrush sldbrush = new SolidBrush(clr))
                {
                    g.DrawString(Settings.Default.TaskText.Replace("\t","    "), f, sldbrush, TaskDrawArea); //2) 寫字
                }
            }
            
            ReleaseDC(IntPtr.Zero, hdc); //2)釋放GC
            
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
        }
        finally
        {
            swTick = false;
        }
    }
}

視窗關閉時:
    使用 InvalidateRect API 重新整理整個螢幕protected override void OnHandleDestroyed(EventArgs e)
{
    //重新整理整個螢幕
    bool rVar = InvalidateRect(IntPtr.Zero, IntPtr.Zero, false);
    base.OnHandleDestroyed(e);
}

工程中還有:
   設定視窗:設定文本位置、字型顏色等 相關技術:綁定設定檔,綁定config
   文本更改視窗:更改文本;

不多說了:下載代碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.