本文目錄一覽:
- 1、python 用py2exe 打包程序報錯 !!! 如何打包依賴?求打救…..[抓狂]
- 2、python 如何監控進程GDI對象
- 3、如何使用GDI繪製半透明矩形
- 4、請教該怎麼使用GDI+控制項
python 用py2exe 打包程序報錯 !!! 如何打包依賴?求打救…..[抓狂]
在你自己機器上運行時,確保上面說的dll在你的文件路徑下就行了。system32目錄一定在你路徑下,把
python27\dlls
下的幾個文件複製到
exe
文件目錄下試試吧。再不行,改用
pyinstaller
打包吧。我現在放棄
py2exe
改用這個了,感覺比
py2exe
好。話說
py2exe
也好久沒更新了好像。
python 如何監控進程GDI對象
GR_GDIOBJECTS
Return the count of GDI objects. //
GR_USEROBJECTS
1
Return the count of USER objects.
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,7604); //傳對應的進程ID
//GetProcessMemoryInfo(hProcess,ProMem,sizeof(ProMem));
DWORD dwGdi = GetGuiResources(hProcess, GR_GDIOBJECTS);
DWORD dwUser = GetGuiResources(hProcess, GR_USEROBJECTS);
CloseHandle(hProcess);
如何使用GDI繪製半透明矩形
HDC hBitmapDC = CreateCompatibleDC(hDC);
HBITMAP hBitmap = CreateCompatibleBitmap(hDC, rt.Width(), rt.Height());
SelectObject(hBitmapDC,hBitmap);
步驟2)在內存DC中繪圖
FillRgn(hBitmapDC, (HRGN)rgn, (HBRUSH)m_pGdiBrush);
Rectangle(hBitmapDC, 0, 0, 100, 100);
步驟3) 半透明混合
BLENDFUNCTION bf;
bf.BlendOp = AC_SRC_OVER;
bf.BlendFlags = 0;
bf.AlphaFormat = 0;
bf.SourceConstantAlpha = 50;
AlphaBlend(hDC,rt.left,rt.top,rt.Width(),rt.Height(),hBitmapDC,0,0,rt.Width(),rt.Height(),bf);
2、GDI+
步驟1) 創建半透明畫刷
m_pBrush = new SolidBrush(Color(128, GetRValue(clrMask), GetGValue(clrMask), GetBValue(clrMask))); // 透明度 128
步驟2)使用畫刷繪圖
Graphics graphics(hDC);
graphics.FillPolygon(m_pBrush, pts, 3, FillModeAlternate);
效率: GDI+ GDI。
使用GDI+繪圖簡單而高效,所以推薦使用GDI+。
3、Direct Draw
此方法比較複雜,沒有對Direct Draw有一定的了解,不推薦此方法。
代碼比較多,不做列舉,需要注意的地方有:
使用Direct Draw時,注意,繪製半透明多邊形的時候,因為牽涉到已有的圖像數據,所以會對繪圖頁面原有的圖像進行讀取操作。如果當前繪製頁面開闢在顯存中的時候,
對顯存的讀操作會導致整個渲染流水線的暫停,
從而嚴重影響程序的效率,此時,繪製半透明多邊形就會變得異常的慢。這時候需要將繪製頁面從顯存中更改至內存中。或者在內存中創建一個過度頁面,繪製完成後再往顯存頁面上貼圖。效率會有顯著提升,實測:
請教該怎麼使用GDI+控制項
創建自定義控制項的3種主要實現方式:
1)繼承已有的控制項來實現自定義控制項: 主要是當要實現的控制項和已有的控制項在很多方面比較類似, 通過對已有控制項的擴展來滿足要求。
2)通過繼承一個布局文件實現自定義控制項,一般來說做組合控制項時可以通過這個方式來實現。
注意此時不用onDraw方法,在構造廣告中通過inflater載入自定義控制項的布局文件,再addView(view),自定義控制項的圖形界面就載入進來了。
3)通過繼承view類來實現自定義控制項,使用GDI繪製出組件界面,一般無法通過上述兩種方式來實現時用該方式。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/240628.html