读书人

Panel上图片重绘解决方案

发布时间: 2012-03-20 14:01:11 作者: rapoo

Panel上图片重绘
我用Panel加载图片,因为图片有时量很大,用image会报错,所以只能用Panel来显示,但这样操作之后会有一个问题,当有个其它窗口遮挡住Panel后,在没有新的图片来之前,被遮住的那一部分就会变成黑的。
这就是问题,如果在其它窗口遮挡Panel离开后让Panel重绘出图片来

[解决办法]
可以改用paintbox 在onpaint中写事件画图片
如果不想改也可以,在窗体的onpaint中画图片,一样的
[解决办法]
在paint事件中画
[解决办法]
onpaint中写绘制代码
[解决办法]
掉用Paint,或Refresh或invalied
[解决办法]
个人建议用onpaint重绘,至于放在哪个窗体里重绘,楼主自己可以试一下
[解决办法]
如果影响速度的话,哪不如不初始化了
[解决办法]
如果影响速度的话,哪不如不初始化了

----------------------------------

赋个初始值还会多影响速度?你当CPU是乌龟么...
[解决办法]
别说是panel,就是button按扭,只要有句柄,GetDC后,就可以加载图片。楼主所提供加载图片的代码并不简洁。建议你创建TCanvas来直接画上去即可。至于被别的窗口当住后会消失部分图片,那是因为你没有在OnPaint事件里面画,如果panel没有OnPaint事件,那么你可以直接在WndProc中拦截该消息。
比如if Msg.Msg = WM_PAINT then
[解决办法]
建议楼主看下SkinForm的代码。
[解决办法]

探讨
引用:
建议楼主看下SkinForm的代码。

原来程序中用了比较多BusinessSkinForm的控件,但后来发现用了这控件后经常导致程序发生错误,改成其它控件后就不会有这问题了

读书人网 >.NET

热点推荐