PIXNET Logo登入

Edison.X. Blog

跳到主文

YouLoveMe() ? LetItBe() : LetMeFree() ;

部落格全站分類:數位生活

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 4月 07 週四 201115:02
  • [Win32] 波形圖

1.bmp
這問題實在看了很多人問,但大多是視窗程式還沒學過,只學到 Console 下之程式設計便問要怎麼畫波形圖。在 Console 下畫不是不能畫,可以說是「不習慣」,也可以說是「不好畫」。
這問題我用四種不同方法解過 -
(1) 直接用 Console Mode 上用 printf / cout 去畫,但這個很麻煩
(2) 調用 Console Function 在 Console Window 上畫
(3) 用 Win32 API 去畫
(4) 用 MFC 去畫
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(1) 人氣(2,780)

  • 個人分類:GDI
▲top
  • 3月 29 週二 201118:54
  • [W] C 語言截取視窗存成圖片

這是初步,主要展示取得一個 window handle 後,將其 window 存成 bmp 圖檔。至於要存哪個 window,
可再用 FindWindow 與 FindWindowEx 繼續找下去
 
#include <windows.h>
#include <stdio.h>

void CaptureScreen( HWND hwnd, char *filename)
{
HDC hdcWindow;
HDC hdcMemory;
HBITMAP hBitmap;
BYTE *lpvBits;
BITMAPINFO bi;
BITMAPINFOHEADER bih;
BITMAPFILEHEADER bifh;
HANDLE hFile;
DWORD dwBytesWritten = 0;
DWORD dwSize;
int xSize, ySize;
RECT rect;
hdcWindow = GetDC(NULL);

GetWindowRect(hwnd, &rect);

xSize = rect.right - rect.left;
ySize = rect.bottom - rect.top;
hBitmap = CreateCompatibleBitmap(hdcWindow, xSize, ySize);
hdcMemory = CreateCompatibleDC(hdcWindow);
SelectObject(hdcMemory, hBitmap);
BitBlt(hdcMemory, 0, 0, xSize, ySize,
hdcWindow, rect.left, rect.top, SRCCOPY);

bih.biSize = sizeof(BITMAPINFOHEADER);
bih.biWidth = xSize;
bih.biHeight = ySize;
bih.biPlanes = 1;
bih.biBitCount = 32;
bih.biCompression = BI_RGB;
bih.biSizeImage = 0;
bih.biXPelsPerMeter = 0;
bih.biYPelsPerMeter = 0;
bih.biClrUsed = 0;
bih.biClrImportant = 0;

dwSize = (((xSize * 32 + 31)/32) * 4 * ySize);
lpvBits = (BYTE*)malloc(dwSize);

bifh.bfType = 0x4D42;
bifh.bfSize = sizeof(BITMAPFILEHEADER) +
sizeof(BITMAPINFOHEADER) + dwSize;
bifh.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) +
(DWORD)sizeof(BITMAPINFOHEADER);
bifh.bfReserved1 = 0;
bifh.bfReserved2 = 0;

bi.bmiHeader = bih;

GetDIBits(hdcMemory, hBitmap, 0, (UINT)ySize,
lpvBits, &bi, DIB_RGB_COLORS);
hFile = CreateFile(filename, GENERIC_WRITE, 0,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

WriteFile(hFile, (LPSTR)&bifh,
sizeof(BITMAPFILEHEADER), &dwBytesWritten, NULL);
WriteFile(hFile, (LPSTR)&bih,
sizeof(BITMAPINFOHEADER), &dwBytesWritten, NULL);
WriteFile(hFile, (LPSTR)lpvBits,
dwSize, &dwBytesWritten, NULL);

DeleteDC(hdcMemory);
DeleteObject(hBitmap);
CloseHandle(hFile);
free(lpvBits);
ReleaseDC(hwnd, hdcWindow);
}

int main()
{
HWND hwnd = GetConsoleWindow();
HWND hdesktop = GetDesktopWindow();
printf("Hello, World!!");
CaptureScreen(hwnd, "D:\\a.bmp"); /* 截取此 console 視窗圖片 */

/* 將此 console 隱藏,避免截取桌面時截到 console window */
// ShowWindow(hwnd, 0);
CaptureScreen(hdesktop, "D:\\desktop.bmp"); /* 截取目前桌面圖片 */
return 0;
}
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(0) 人氣(1,406)

  • 個人分類:GDI
▲top
1

個人資訊

edisonx
暱稱:
edisonx
分類:
數位生活
好友:
累積中
地區:

熱門文章

  • (4,979)多測資處理
  • (21,952)bitset 整理
  • (83,006)[C&++] 亂數基本使用
  • (444,457)[C] printf 引數說明
  • (39,455)[C] scanf 引數說明
  • (31,150)[W] 初學者的 windows.h
  • (49,837)VBA Procedure 簡述
  • (45,791)VBA 活頁簿(Workbooks)管理
  • (58,126)[浮點數] IEEE754 , C/C++ 浮點數誤差
  • (80,150)[C] 計時器整理

文章分類

toggle 開發手札 (2)
  • 未實作的想法 (4)
  • 心得筆記 (2)
toggle C/C++ (8)
  • C/C++ Note (52)
  • 亂數 (10)
  • Debug (9)
  • Hidden Features in C (6)
  • OO NOTE (0)
  • 面試題庫 (12)
  • C/C++ FAQ (4)
  • STL Note (3)
toggle 應用軟體/工具 (1)
  • Office (1)
toggle 數值分析 (9)
  • 非線性方程式求解 (10)
  • 矩陣運算 (7)
  • 深入質數 (5)
  • 浮點數 (9)
  • 複數 Complex (2)
  • 積分法 (2)
  • 多項式內差法 (2)
  • 常見關於數 (5)
  • math.h/cmath application (8)
toggle 程式之美 (1)
  • 遊戲之樂 (3)
toggle VB.Net (1)
  • VB.Net Note (1)
toggle 英文 (1)
  • 專題單字 (1)
toggle AutoIt!! (2)
  • AutoIt!! Note (13)
  • Auto-Dll (9)
toggle VBA (4)
  • VBA FAQ (5)
  • VBA Note (9)
  • VBA tec. (1)
  • VBA_Note2 (3)
toggle MFC (1)
  • MFC雜記 (4)
toggle Win32 (8)
  • Process (10)
  • Win32-Console (5)
  • 檔案系統 (1)
  • 音效 (1)
  • 隱喻外掛 (3)
  • System undoc. (0)
  • GDI (2)
  • 記憶體管理 (1)
toggle 環境與Script (4)
  • visual studio (6)
  • 批次檔batch (2)
  • 程式環境架構 (3)
  • Library (3)
toggle 數學整理 (2)
  • 常用公式 (1)
  • 有趣數學 (2)
toggle 演算法 (7)
  • Bit-Hacks (1)
  • AI (13)
  • 大數 (5)
  • 資料結構 (0)
  • 影像 (2)
  • 遞迴-recursive (2)
  • 回溯.列舉.遞迴 (2)
toggle 程設亂語 (1)
  • 胡言亂語 (10)
toggle SmallTalk (1)
  • SmallTalk (27)
  • 未分類文章 (1)

最新文章

  • 轉戰 python
  • [MFC] CArray 注意事項
  • 你真的很狠...
  • [開發手札] tool 整理 <NOTE>
  • [開發手札] vs dll 相容性
  • [開發手札] vc 效率問題
  • [開發手札] 修改 exe 裡面的 constant
  • [開發手札] 受不了 IDE 常當機問題...
  • [Job] Job Journal 130501
  • [面試] some tips

動態訂閱

文章精選

文章搜尋

誰來我家

參觀人氣

  • 本日人氣:
  • 累積人氣:

留言板