图片放大、缩小的超级难题,请各位朋友支招啊!快疯了!!!!
想实现WinXP自带的 “Windows 图片和传真查看器”类似的放大、缩小功能。
我的实现逻辑如下:(WinForm形式)
1、用一个panel和一个PictureBox来组合显示图片,Panel的AutoScroll属性设为true;
2、第一次显示图片的时候:
如果图片的宽度或高度大于Panel的宽度或高度,则PictureBox的宽度和高度等于Panel的宽度和高度,PictureBox的SizeMode设为Zoom;
否则,PictureBox的宽度和高度等于图片的宽度和高度,PictureBox的SizeMode设为AutoSize,PictureBox在Panel中居中显示。
3、放大、缩小功能:
(1)设置3个数值:最大放大倍数(总为为5,表示只能放大5倍);缩放次数(默认为0);缩放因子(总为1.1);
(2)放大的时候,PictureBox的宽度和高度分别乘以缩放因子,缩放次数递增,当等于最大放大倍数的时候,停止放大;
(3)缩小的时候,PictureBox的宽度和高度分别除以缩放因子,缩放次数递减,当等于0的时候,停止缩小;
(4)每次都要使PictureBox居中显示,如果Panel出现了滚动条,则Panel的滚动条滚动到中间位置。
出现如下问题:
1、当放大、缩小的时候,屏幕会闪烁;
2、当显示大图片的时候,屏幕闪烁得厉害;
3、当出现滚动条的时候,屏幕闪烁得厉害。
怎么做才能减少屏幕闪烁或避免屏幕闪烁?请各位朋友给出出主意,非常感谢大家!!