HICON LoadIcon(LPCSTR lpszResourceName)const // lpszResourceName表示图标资源的字符串名
HICON LoadIcon(UINT nIDResource)const // nIDResource表示图标资源的标识
使用系统中预定好的标准图标,这时需调用CWinApp::LoadStandardIcon函数,其原型如下:
HICON LoadStandardIcon(LPCTSTR lpszIconName)const
其中lpszIconName值可以是下列值之一:
IDI_APPLICATION 默认的应用程序图标
IDI_HAND 手形图标(用于严重警告)
IDI_QUESTION 问号图标(用于提示消息)
IDI_EXCLAMATION 警告消息图标(惊叹号)
IDI_ASTERISK 消息图标
全局函数DestroyIcon可以用来删除一个图标,并释放为图标分配的内存,其原型如下:
BOOL DestroyIcon(HICON hIcon) // hIcon指定要删除的图标句柄
图标的绘制
函数CDC::DrawIcon用来将一个图标绘制在指定的位置处,其原型如下:
BOOL DrawIcon(int x, int y, HICON hIcon)
如题,在GDI+中利用多点绘制曲线折线一般用DrawCurve(Pen, Point[])和DrawLines(Pen, Point[])之类的函数,可是这两个函数的第二个参数都要求是纯Point[]数组类型,在绘制动态曲线的时候,显然是要等到程序运行之后才能确定数据,并且数组里的个数也一直在变(第一秒钟有两个点,第二秒钟有三个点,以此类推的增加)。我的想法自然是先定义动态数组 List<Point myPoints = new List<Point()需要点的时候直接Add()就行了,但是你把泛型的myPoints传到DrawCurve(Pen, Point[])里面程序是会报错的,myPoints.ToArray()之后也一样不行。"希望在绘图的过程中,窗口其他的部分都能点击,不受影响"最合理的办法,是界面线程,也叫“UI线程”,将动态绘图过程放到子线程完成。不过这个有别于普通的工作线程,如果不熟悉,开发起来有一定难度。(百度 UI线程 有很多资料,不赘述)
折中办法,定时器动态绘图。实现人眼无停顿动态,一般使用50毫秒定时器,只要任务不是很复杂,结合合理的双缓冲绘图,可以实现不影响界面。
我估计,你影响界面,应该是在一个大循环里面做绘图吧,这样窗口消息受到影响,消息环无法响应,界面更新和响应会受到影响。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)