<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # GDI繪圖技術 一、3種HDC句柄; 二、3種坐標體系; 三、4種CDC派生類; 四、6種GDI對象; 1.通過HDC句柄有三種方式:標準客戶區繪圖、臨時客戶區繪圖和非客戶區繪圖、 a)標準客戶區繪圖 必須是在WM_PAINT消息回調時才能執行,調用BeginPaint函數獲取標準客戶區繪圖句柄進行繪圖,最后調用EndPaint函數釋放。 ```c++ PAINTSTRUCT ps; HDC hdc = ::BeginPaint(hwndDlg,&ps);//創建畫筆 // Ellipse(hdc,0,0,300,200); //橢圓 Rectangle(hdc,0,0,40,40); //方形 Rectangle(hdc,80,80,120,120); //方形 MoveToEx(hdc,20,20,NULL); //線條 LineTo(hdc,100,100); //線條 EndPaint(hwndDlg,&ps);//結束畫筆 ``` * * * * * b)臨時客戶區繪圖 在任何消息回調時都可以執行,調用 **GetDC ** 獲取臨時客戶區繪圖句柄進行繪圖。最后調用 **ReleaseDC** 釋放 漂浮在窗口表面,窗口刷新調就沒了,不能長期保存 case WM_MOUSEMOVE: { //臨時客戶繪圖 int x = LOWORD(lParam); int y = HIWORD(lParam); HDC hdc = GetDC(hwndDlg); Ellipse(hdc, x - 15, y - 15, x + 15, y + 15); ReleaseDC(hwndDlg, hdc); } return TRUE; c) 非客戶區繪圖 必須是在WM__NCPAINT消息回調時才能執行,調用GetWindowDC函數獲取非客戶區繪圖句柄進行繪圖,最后調用ReleaseDC釋放。 ```c++ case WM_NCPAINT: { //非客戶區 HDC hdc = GetWindowDC(hwndDlg); RECT rect; GetWindowRect(hwndDlg,&rect); Rectangle(hdc,0,0,rect.right - rect.left,rect.bottom - rect.top); char str[200]; sprintf(str,"非客戶區繪圖:(%d,%d,%d,%d)", rect.left,rect.top,rect.right,rect.bottom); TextOut(hdc,5,5,(LPCSTR)str,strlen(str)); ReleaseDC(hwndDlg,hdc); } ``` d)調用Invalidate函數強制客戶區標準繪圖更新,臨時客戶區的繪圖被強制清除。 ```c++ case WM_MOVE: { SendMessage(hwndDlg,WM_NCPAINT,0,0); InvalidateRect(hwndDlg, NULL,TRUE); } ``` 缺省 return FALSE就是自己不處理電腦程序自己處理。 return TRUE就是自己處理
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看