本文目录一览:
- 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绘制出组件界面,一般无法通过上述两种方式来实现时用该方式。