有关CStatic类的重绘,在CStatic类中显示位图,并且刷新解决方法
有关CStatic类的重绘,在CStatic类中显示位图,并且刷新
我想实现动态插入图片的功能,并且改变图片的大小和位置,就像Office中插入图片的效果一样,最好能插入各种类型的图片(.bmp ,.jpeg and so on),我不知道VC6.0中有没有这样的控件。我使用CStatic先实现插入BMP 图片,从文件中动态读入。我是在基于对话框的程序中写的,(vc6.0),可是一最小化后,Cstatic上的图片就没有了。我是在一点击菜单中的插入图片,就出现打开保存对话框,选择一个.bmp图片,通过SetBitmap(),将图片在一动态生成的Cstatic中显示。然后我将这个CStatic指针加入一个链表。在对话框的OnPaint函数里判断链表非空,则取出里面的节点,赋值给 CStatic* pstatic,通过GetBitmap()获得图片hbmp,再SetBitmap(hbmp),为什么不行呢?不能实现重绘的功能?
我想在CStatic的派生类中实现重绘,可是我在派生类中一加入OnPaint,连控件都显示不出来了?各位高人指点一下吧,这个问题困扰我好几天了,谢谢!
------解决方案--------------------
假如你是在一个对话框类:MyDlg中使用了自定义的CStatic派生类
那就要在MyDlg中,在合适的时机调用Invalidate()啊。
别让它死循环了
------解决方案--------------------
如果是设置到控件中,设置一次就行了,不要在OnPaint中重复,注意不要使用局部变量的位图对象;像你这样的,似乎直接用BitBlt或者StretchBlt来绘制更好。
我想实现动态插入图片的功能,并且改变图片的大小和位置,就像Office中插入图片的效果一样,最好能插入各种类型的图片(.bmp ,.jpeg and so on),我不知道VC6.0中有没有这样的控件。我使用CStatic先实现插入BMP 图片,从文件中动态读入。我是在基于对话框的程序中写的,(vc6.0),可是一最小化后,Cstatic上的图片就没有了。我是在一点击菜单中的插入图片,就出现打开保存对话框,选择一个.bmp图片,通过SetBitmap(),将图片在一动态生成的Cstatic中显示。然后我将这个CStatic指针加入一个链表。在对话框的OnPaint函数里判断链表非空,则取出里面的节点,赋值给 CStatic* pstatic,通过GetBitmap()获得图片hbmp,再SetBitmap(hbmp),为什么不行呢?不能实现重绘的功能?
我想在CStatic的派生类中实现重绘,可是我在派生类中一加入OnPaint,连控件都显示不出来了?各位高人指点一下吧,这个问题困扰我好几天了,谢谢!
------解决方案--------------------
假如你是在一个对话框类:MyDlg中使用了自定义的CStatic派生类
那就要在MyDlg中,在合适的时机调用Invalidate()啊。
别让它死循环了
------解决方案--------------------
如果是设置到控件中,设置一次就行了,不要在OnPaint中重复,注意不要使用局部变量的位图对象;像你这样的,似乎直接用BitBlt或者StretchBlt来绘制更好。