如何不失真地显示长、宽超过32768缇的图片
编号:QA002605
建立日期: 2000年2月20日 最后修改日期:2000年7月16日
所属类别:
FrozenLight:
操作系统:Win98
编程工具:VB6.0
问题:如何不失真地显示长、宽超过32768缇的图片?!我试过用两个Picture Box和滚动条来做,但是好象无法成功,不是说溢出就是图片显示不正常,超过的部分无法显示而是又重复起始的部分,但是看IE浏览器等软件却能正常的显示这些图片,请问有什么办法?!如果要用到其它的控件也行,最好给出一个简单的例子,谢谢……
回答:
用两个 Picture Box和 滚动条 来做 ,但是好象无法成功 ... 溢出 ...
是因为: 0 <= HVScrollBar.Min <= HVScrollBar.Value <= HVScrollBar.Max <= 32767
而: PictureBox的Width与Height是应该可以可以 > 32767缇的,不信可以试试: PictureBox.Width=65536 !
所以仅是由于 "滚动条" 的问题引起的 "溢出"!
可编写如下代码解决:
(参阅MSDN:《Scroll Bar 控件方案:创建可滚动的图形视口》)
N为一适当的倍(Integer)数:
...
HScroll1.Max = (Picture2.Width - Picture1.Width) \ N '<=32767缇
VScroll1.Max = (Picture2.Height - Picture1.Height) \ N '<=32767缇
...
Private Sub HScroll1_Change()
Picture2.Left = -HScroll1.Value * N
End Sub
Private Sub VScroll1_Change()
Picture2.Top = -VScroll1.Value * N
End Sub
相关问题:
QA000175 "如何建立滚动的窗口"
胡文的意见:
很简单。Picture使用Pixels象素单位,不是使用Twips单位,这样Scroll控件就不越界了。至于在Form中位置设置,须应用Screen.TwipsPerPixelX,.TwipsPerPixelY。
此问题由于溪玥回答。
| |
|
|
| |
|
|