读书人

求大神:vb.net中在有背景图的情况下怎

发布时间: 2013-10-30 12:56:21 作者: rapoo

求大神:vb.net中在有背景图的情况下如何提高透明图片的切换速度
本帖最后由 hw19900825 于 2013-10-28 16:34:20 编辑 情况:在一张地图上有多个交叉口(大概100个),要在上面显示红绿灯图片(图片为正方形,中间是红或绿的圆,圆以外区域透明),现要求每秒变换一次图片颜色。版本:.net framework 3.5
采用方法:将图片放入label(picturebox也试过)控件中,每秒切换一次
遇到问题:图片切换速度很慢,所有红绿灯不是同时变换,而是一个接一个的往下变,渐变效果非常明显
预计原因(猜测):图片在变换时为了显示图片的透明部分会去读背景图,然后将背景图那块显示在透明部分。将背景图去掉后,变换速度很快,几乎同时
求教:现在背景图是肯定要的,红绿灯图片可以自己作,图片四周不透明的话会盖住背景图上的道路,求怎样才能让所有图片几乎同时变动啊,求大神指教啊
图片透明 vb.net 切换 速度
[解决办法]
把这些东西全部画在地图上
[解决办法]
提高绘图质量
Graphics.SmoothingMode = SmoothingModeHighQuality
[解决办法]
其实,我不太赞同直接绘制底图后再上面绘制红绿灯。另外,你说周边粗糙很可能不仅仅是绘图质量,而是多次变换状态后一遍一遍绘制红绿灯(而从未“擦出”)导致多个图片边缘叠加在一起,alpha融合效果已经没有了,得到一个粗糙的黑边。
一个简单的办法是,你在内存里创建一个位图,先把地图对应位置的矩形范围绘制上,再绘制上红灯,于是得到了一个不透明的红灯(底图是动态生成的底图对应位置图片),同样绘制绿灯。仍然使用两个image控件进行切换。
再进一步,你可以对底图先自动切片,然后拼接绘制到一起。这样动态生成带有地图底图的不透明红绿灯会更快。

读书人网 >VB Dotnet

热点推荐