2007年12月22日 星期六

[C++] GDI

// 建立一個與目前視窗相容的 HDC hdcBmp 

HDC hdc = GetDC(hwndApp); 
HDC hdcBmp = CreateCompatibleDC(hdc); // our new HDC

// 建立一個新的 bitmap 大小剛好與顯示的影像高寬一樣 
HBITMAP hbm; 
hbm = CreateCompatibleBitmap(hdc, cx, cy);

ReleaseDC(hwndApp, hdc); //  hdc 已經不需要, 先 Released 以免忘記!

 // 設定目前 [背景DC] 的圖形, 為 [新的 Bitmap], 
 
// 等一下我們要利用 [背景DC] 在 Bitmap 上畫圖
    BITMAP bm; // our new bitmap
    HBITMAP hbmOld; // old
    GetObject(hbm, sizeof(bm), &bm); // 取得 bitmap hbm 資料 -> bm

   // 設定背景顏色: 如 虛線或刷子的背景顏色
    SetBkColor(hdcBmp, RGB(255,255,255));

   // 建立繪圖輔助物件
    HPEN hpen, hpenOld;
    HBRUSH hbrush, hbrushOld;
    hpen = CreatePen(PS_SOLID, 10, RGB(0, 255, 0));    // 建立綠色的筆
    hbrush = CreateSolidBrush(RGB(255, 255, 255));// 建立筆刷物件

   // 設定 [背景 DC] 新的圖,新的筆和刷子
    hbmOld = (HBITMAP)SelectObject(hdcBmp, hbm);
    hpenOld = (HPEN)SelectObject(hdcBmp, hpen); 
    hbrushOld = (HBRUSH)SelectObject(hdcBmp, hbrush); 
    // 畫出測試幾何圖形
    Rectangle(hdcBmp, 0,0, cx,cy); // 方形
    MoveToEx(hdcBmp,StartX,StartY,NULL); // 直線
    LineTo(hdcBmp, EndX, EndY);
    // 用完繪圖輔助物件, 先刪除以免忘記
    DeleteObject(SelectObject(hdcBmp, hpenOld));
    DeleteObject(SelectObject(hdcBmp, hbrushOld));

    DeleteObject(SelectObject(hdcBmp, hbmOld));

沒有留言:

張貼留言