热情软件屋

 

如何不失真地显示长、宽超过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。

此问题由于溪玥回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio