1. 程式人生 > >學習windows編程 day3 之 自定義畫筆的兩種方法

學習windows編程 day3 之 自定義畫筆的兩種方法

cas delete tro HP rec col 編程 UC eat

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    RECT rect;
    HPEN hPen, hOldPen;

    switch (message)
    {
    case WM_PAINT:
        hdc = BeginPaint(hwnd, &ps);
        GetClientRect(hwnd, &rect);
    //1.獲取畫筆
        
//hPen=GetStockObject(BLACK_PEN); //2.自己新建畫筆 //方法一: //封閉圖像時,使用線寬中間作為邊界,所以會比想要的大小多出來一部分(線寬大小) //hPen = CreatePen(PS_SOLID, 100, RGB(255,0,0)); //對於虛線而言,若是線寬大於1則會顯示實現,原來線條的樣式失效 //hPen = CreatePen(PS_DASH ,0.1, RGB(255, 0, 0)); //hPen = CreatePen(PS_DASHDOT, 0.1, RGB(255, 0, 0));
//hPen = CreatePen(PS_DASHDOTDOT, 0.1, RGB(255, 0, 0)); //用於封閉圖像的使用:在後面可以進行填充 邊框向內壓縮 //hPen = CreatePen(PS_INSIDEFRAME, 10, RGB(255, 0, 0)); //方法二: LOGPEN pen[10]; for (int i = 0; i < 10;i++) { pen[i].lopnStyle = PS_SOLID; pen[i].lopnWidth.x = (i + 1
) * 5; pen[i].lopnColor = RGB(20 * i, 0, 0); } //設置多個畫筆樣式 //使用createpenindorect直接取出樣式使用,代碼簡潔明了,也更加具有可重用性 for (int i = 0; i < 10;i++) { hPen = CreatePenIndirect(&pen[i]); hOldPen = SelectObject(hdc, hPen); Ellipse(hdc, 100+30*i, 100, 300+30*i, 200); DeleteObject(hPen); } // MoveToEx(hdc, rect.left, (rect.bottom-rect.top) / 2, NULL); // LineTo(hdc, rect.right, (rect.bottom - rect.top) / 2); //只能刪除自己定義的對象,系統帶有的不允許刪除 //DeleteObject(hPen); SelectObject(hdc, hOldPen); EndPaint(hwnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, message, wParam, lParam); }

學習windows編程 day3 之 自定義畫筆的兩種方法