![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 Y.S ![]()
![]() |
近日,在寫C sharp 截取螢幕圖片的功能 爬了相關的文章 目前有一段可以執行的程式碼 [code] private void button1_Click(object sender, EventArgs e) { int screenWidth = 0; int screenHeight = 0; for (int x = 0; x < Screen.AllScreens.Length; x++) { screenWidth += Screen.AllScreens[x].Bounds.Width; } for (int x = 0; x < Screen.AllScreens.Length; x++) { if (Screen.AllScreens[x].Bounds.Height > screenHeight) { screenHeight = Screen.AllScreens[x].Bounds.Height; } } Size sz = new Size(screenWidth, screenHeight); IntPtr hDesk = GetDesktopWindow(); IntPtr hSrce = GetWindowDC(hDesk); IntPtr hDest = CreateCompatibleDC(hSrce); IntPtr hBmp = CreateCompatibleBitmap(hSrce, sz.Width, sz.Height); IntPtr hOldBmp = SelectObject(hDest, hBmp); bool b = BitBlt(hDest, 0, 0, sz.Width, sz.Height, hSrce, 0, 0, CopyPixelOperation.SourceCopy | CopyPixelOperation.CaptureBlt); Bitmap bmp = Bitmap.FromHbitmap(hBmp); SelectObject(hDest, hOldBmp); DeleteObject(hBmp); DeleteDC(hDest); ReleaseDC(hDesk, hSrce); Clipboard.SetImage(bmp); bmp.Dispose(); }[/code] 但在XP下,截取圖片時,只要是影片就會顯示成黑色的一塊 想請問在不關閉硬體加速跟Overlay的情況下 我該怎麼去截取影片檔的影像? 謝謝
本篇文章發表於2011-07-28 23:30
|
1樓 |
Various methods for capturing the screen
Trick: How to Capture Video Screen Shots
本篇文章回覆於2011-07-29 08:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓 |
http://www.dotblogs.com.tw/puma/archive/2008/08/21/4967.aspx
本篇文章回覆於2011-07-29 09:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓 |
之前也遇過類似的問題
不過我是關閉硬體加速 To shinyo : 我有嘗試去編譯您的程式碼 撥放影片好像截不出圖來 樓主有試過了嗎? 這是截取的影像 ![]()
本篇文章回覆於2011-07-29 14:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓
作者回應
Y.S ![]() |
如樓上說說
在 xp 下,一、二樓所提供的方法,均無法截下 hardware overlay 的圖片(黑畫面)
本篇文章回覆於2011-07-30 16:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓 |
你有看Trick: How to Capture Video Screen Shots 嗎? 他有提到在不關閉你說的HARDEARE(加速?)下, 可以先開一個Windows Media Player並播放影片, 然後再開你自己的影片播放程式, 這樣就可以以軟體方式去截圖。
本篇文章回覆於2011-07-31 09:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓
作者回應
Y.S ![]() |
To: 展翔研究室
Trick: How to Capture Video Screen Shots 提供的方式在 Win7 可用 但在 WindowsXP 下還是失敗了,目標是找到在 WindowsXP 下也能執行的方法 圖片如下連結所示: 圖片
本篇文章回覆於2011-08-01 17:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |