求 解决VB.net中 VS和HS滑动picturebox中图片的闪烁问题

Adrian0588 2011-05-18 04:47:55
怎么解决VB.net中 VS和HS滑动picturebox中图片的闪烁问题

求各位大神帮助啊
...全文
172 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Adrian0588 2011-05-26
  • 打赏
  • 举报
回复
回复各位:有时候写就容易钻死脑筋。现在问题解决了。方法更加简单。。。。把PictureBox放在一个Panel里,picturebox.size=new point(picturebox.image.widtrh,picturebox.image.height)。Panel比图像小的时候,里面有自带的滚动条属性,能很好的解决问题。。。额。。。这是有多方便啊。。谢谢大家啊。问题解决
xiaoid 2011-05-25
  • 打赏
  • 举报
回复
另一种方法是自己绘制.只绘制能显示的那一部分,不显示的就别不绘制了.肯定不闪.
xiaoid 2011-05-25
  • 打赏
  • 举报
回复
启用picturebox的双缓冲属性.
shixuexeon 2011-05-25
  • 打赏
  • 举报
回复
这个是否可以用于数据回放?看起来似乎可以
Adrian0588 2011-05-24
  • 打赏
  • 举报
回复

Private Sub HScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll

Dim mybit As New System.Drawing.Bitmap(PictureBox1.Image)
Dim mypicgrh As System.Drawing.Graphics = Me.PictureBox1.CreateGraphics
mypicgrh.Clear(Me.PictureBox1.BackColor)
mypicgrh.DrawImageUnscaled(mybit, m_leftx - HScrollBar1.Value, PictureBox1.Location.X)
'减去6:是picturebox1距离窗口左边的距离
mypicgrh.DrawImageUnscaled(mybit, PictureBox1.Location.X - 6 - HScrollBar1.Value, m_lefty)
m_leftx = PictureBox1.Location.X - 6 - HScrollBar1.Value

mybit.Dispose()

mypicgrh.Dispose()

DoubleBuffered = True
End Sub

Private Sub VScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles VScrollBar1.Scroll
Dim mybit As New System.Drawing.Bitmap(PictureBox1.Image)
Dim mypicgrh As System.Drawing.Graphics = Me.PictureBox1.CreateGraphics
mypicgrh.Clear(Me.PictureBox1.BackColor)
'减去82是picturebox1距离窗口顶端的距离
mypicgrh.DrawImageUnscaled(mybit, m_leftx, PictureBox1.Location.Y - 82 - VScrollBar1.Value)
m_lefty = PictureBox1.Location.Y - 82 - VScrollBar1.Value

mybit.Dispose()

mypicgrh.Dispose()

DoubleBuffered = True
End Sub
Adrian0588 2011-05-24
  • 打赏
  • 举报
回复
回复6楼,应该能不闪的。。。。。。。。。。
Adrian0588 2011-05-24
  • 打赏
  • 举报
回复
回复5楼,图片的格式是Tif的,扫描图片,大不说,还很麻烦,同一张图片都可以翻页,很纠结,闪烁的问题,我也不晓得是怎么回事。。。。。。。这个问题,实在是经验不足,所以。。。
Adrian0588 2011-05-24
  • 打赏
  • 举报
回复
OK。。我在研究研究。。。。谢谢热心帮助啊。
zixingcheng_ 2011-05-24
  • 打赏
  • 举报
回复
图片太大先想办法压缩下,不能硬来啊。这个是用。net的方法操作大图没研究过不好说,你自己在研究下吧。

GIS中有专门操作这样的大图,如大的影像图,导出后有几十M,几百M甚至更多,当然那个是存在数据库的,然后使用影像金字塔的方式实现,不管图多大质量多高,速度么啥明显的区别。其实也是种压缩提取技术。
古今多少事 2011-05-23
  • 打赏
  • 举报
回复
图片大到一定的时候似乎都会闪。
zixingcheng_ 2011-05-23
  • 打赏
  • 举报
回复
PictureBOX+Vs+Hs 应该是没问题的,屁大点的图片,应该是你程序写的有问题。最好说明你怎么做的或者上代码,也可以试试双缓存。
不行就试最原始的办法,图片一次全部载入pic大小自适应,将pic放置进panel中,panel大小调整为你需要,然后vs\hs动作时调整你pic的left,top即可,效果也是在固定区域移动显示图片,这样再闪烁就得看你机器是否问题了。
Adrian0588 2011-05-23
  • 打赏
  • 举报
回复
各种没有解决啊。。悲剧的
Kation 2011-05-22
  • 打赏
  • 举报
回复
补充下,OnBackgroundPaint。好像是这个
Kation 2011-05-22
  • 打赏
  • 举报
回复
重载backgroundpaint。
去掉base.backgroundpaint()

这个名称我忘记了,反正是Background 和 Paint什么的
蛋蛋の忧伤 2011-05-22
  • 打赏
  • 举报
回复
好像是通过缓存来实现的

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧