日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GDI+桌面画图

發布時間:2024/1/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GDI+桌面画图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

很簡陋的一共桌面畫圖工具。

在桌面畫圖主要需要用到GetDC這個API,該函數檢索一指定窗口的客戶區域或整個屏幕的顯示設備上下文環境的句柄,以后可以在GDI函數中使用該句柄來在設備上下文環境中繪圖。

通過該函數是為了獲取桌面的繪圖圖面。然后用鉤子勾住鼠標全局事件,進行畫線。效果很差,其他Paint消息會將自己畫的線重繪掉。

看了一些方案說是需要創建一共全屏窗體,然后重繪桌面背景到窗體。再窗體下方響應鼠標事件。難度較大,后續會嘗試下。

效果如下:

主要代碼如下:

?

class DeskTopDraw{private static DeskTopDraw dtd = null;private static readonly object locker = new object();public static DeskTopDraw GetInstance(){lock (locker){if (dtd == null)dtd = new DeskTopDraw();}return dtd;}/// <summary>/// 該函數檢索一指定窗口的客戶區域或整個屏幕的顯示設備上下文環境的句柄,/// 以后可以在GDI函數中使用該句柄來在設備上下文環境中繪圖。/// </summary>/// <param name="hWnd"></param>/// <returns></returns>[DllImport("User32.dll")]private extern static IntPtr GetDC(System.IntPtr hWnd);/// <summary>/// 畫筆/// </summary>public Pen p = new Pen(Brushes.Red, 5);Point start = new Point();Point end = new Point();MouseHook mouseHook = new MouseHook();private DeskTopDraw(){ }public bool Init(){//設置筆的屬性,避免出現“毛刺” p.StartCap = LineCap.Round;p.EndCap = LineCap.Round;p.LineJoin = LineJoin.Round; mouseHook.MouseMove += new MouseEventHandler(mouseHook_MouseMove);mouseHook.MouseDown += new MouseEventHandler(mouseHook_MouseDown);mouseHook.MouseUp += new MouseEventHandler(mouseHook_MouseUp);mouseHook.Start();return mouseHook.IsStarted;}public void Uinit(){mouseHook.Stop();}/// <summary>/// 是否開始繪制/// </summary>bool isDraw = false;List<Point> ls = new List<Point>();void mouseHook_MouseDown(object sender, MouseEventArgs e){if (e.Button == MouseButtons.Left){//鼠標左鍵點下 則開始繪制isDraw = true;start = e.Location;//記錄開始位置}}void mouseHook_MouseMove(object sender, MouseEventArgs e){if (isDraw){end = e.Location;//記錄結束位置IntPtr DesktopHandle = GetDC(IntPtr.Zero);//獲取桌面上下文句柄Graphics g = System.Drawing.Graphics.FromHdc(DesktopHandle);//創建畫板g.SmoothingMode = SmoothingMode.AntiAlias;g.DrawLine(p, start, end);//畫線start = end;//將結束位置再次作為開始位置g.ReleaseHdc(DesktopHandle);//釋放上下文g.Dispose();}}void mouseHook_MouseUp(object sender, MouseEventArgs e){if (e.Button == MouseButtons.Left){isDraw = false;}}}

?

窗體代碼如下:

public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){DeskTopDraw dt = DeskTopDraw.GetInstance();if (!dt.Init())MessageBox.Show("初始化失敗");}private void Form1_FormClosed(object sender, FormClosedEventArgs e){//不釋放也可以,其內部綁定了Application_ApplicationExit事件DeskTopDraw dt = DeskTopDraw.GetInstance();dt.Uinit();}private void button2_Click(object sender, EventArgs e){DeskTopDraw dt = DeskTopDraw.GetInstance();dt.Uinit();} }

鉤子類請參考


http://blog.csdn.net/q317379184/article/details/47979309?

?


?

總結

以上是生活随笔為你收集整理的GDI+桌面画图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲在线网站 | 瑟瑟视频免费观看 | 欧洲-级毛片内射 | 深田咏美av在线 | 亚洲欧美自拍视频 | 意大利少妇愉情理伦片 | 在线免费观看麻豆 | 国产69精品久久久久777 | 受虐m奴xxx在线观看 | 亚洲成人自拍视频 | 亚洲欧洲一区二区 | 日韩视频一区二区 | www.com捏胸挤出奶 | 久久国产精品精品国产色婷婷 | 91福利免费视频 | 91婷婷色| 久久er99热精品一区二区介绍 | 国产精品乱码久久久久久久久 | 五月天看片 | 美女作爱网站 | 在线免费黄色 | 日本一区二区三区免费在线观看 | 国产无玛 | 国产精品日韩电影 | 激情五月激情综合 | 黄色成人av网站 | 精品国产麻豆 | 91亚洲精品久久久久久久久久久久 | 国产精品久久久91 | 爱爱二区| 欧美黄色短视频 | 一本加勒比波多野结衣 | 久久久久久久久久久久久女国产乱 | www.白浆 | 性渴老太作爱 | 密臀av在线| 91亚洲国产精品 | a级欧美| 亚洲热影院 | 日本黄色小网站 | 亚洲自拍偷拍欧美 | 国产一区黄色 | 欧美videos另类极品 | av福利网站| 亚洲天堂视频网站 | 尤物视频在线观看国产性感 | 日本精品一区视频 | 日韩欧美大片 | av私库在线观看 | 麻豆视频免费 | 都市激情久久 | h片在线| www.人人干 | 亚洲毛片久久 | 欧美天堂 | 精品国产一区三区 | 熟女性饥渴一区二区三区 | 一起草av在线 | 男人的天堂在线播放 | 男人午夜视频 | 日本aaaa| 欧美色图首页 | 亚洲制服一区二区 | 亚洲国产成人精品女人 | 二区三区偷拍浴室洗澡视频 | 日韩女优一区二区 | 成人黄色小视频在线观看 | 久久久欧洲 | 亚洲精品国产精品乱码在线观看 | 婷婷玖玖 | 操操操爽爽爽 | 国产精品国产自产拍高清av | 好吊妞视频在线 | 伊人久久中文字幕 | 久久午夜av| 亚洲一区二区福利 | 高清精品xnxxcom | 一级黄色网址 | 奇米影视在线播放 | 日本欧美韩国国产精品 | 天天摸天天碰 | 日韩精品二区在线观看 | 精品久久人妻av中文字幕 | 在线视频 亚洲 | 黄网站色视频免费观看 | 成人欧美视频在线观看 | 成人免费av在线 | 国产福利免费 | 国产3区 | 久久精品国产熟女亚洲AV麻豆 | 亚洲成人一二三 | www.五月婷婷| 多啪啪免费视频 | 制服一区二区 | 青青草原国产视频 | 欧美一级片在线 | 青娱乐最新地址 | 麻豆视频一区二区 | 91高清视频 |