网上搜了一下,好像需要用到重绘?但是苦于没有具体的例子,谁能具体指点一下
17 个解决方案
#1
OnPaint中画,加双缓冲,试试呢
#2
双缓冲的方法 我是这么做的:
1.写了一个类 public class PanelEx : Panel
然后在这个类PanelEx 中写了一个 构造函数
public PanelEx()
{
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true);
}
然后用这个类PanelEx去操作, 但是没有效果
1.写了一个类 public class PanelEx : Panel
然后在这个类PanelEx 中写了一个 构造函数
public PanelEx()
{
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true);
}
然后用这个类PanelEx去操作, 但是没有效果
#3
OnPaint中画
这个怎么画? 能给个例子嘛?
#4
有人帮忙看看不.......
#5
form1.DoubleBuffered=true;
#6
容器类控件在滚动具有大背景图的情况时,会出现抖动,这个是.NET性能造成的。目前除了自己编写需要的控件外,别无其他完美的方法。
#7
c#高级编程里面有关于滚动条滚动后重新绘制滚动区域的例子,可以参考下
也就是说只是重新绘制可显示的部分即可
也就是说只是重新绘制可显示的部分即可
#8
在OnPanit里面重画 注意 只要画 能显示部分即可
#9
目前在看这一部分章节,希望能找到解决方法 谢谢了
#10
搞不定啊, 有没有人帮忙看下
#11
你可以继承panel写一个自己的myPanel,在myPanel 中重写OnPaint事件,进行显示区域重绘,然后再自己的myPanel 中放一个size大于myPanel 的pictureBox,把图片放到picturebox里面,别设置为背景图
然后再用c#高级编程里面那个例子
然后再用c#高级编程里面那个例子
#12
panel 里放稍大点的背景图片都会闪! 我当时也搞了好久... 最后还是没搞出来。 用pictureBox 代替了!
#13
双缓存能好一点,也只是好一点而已。
#14
可不可以将图片直接画到Panel上,在Panel尺寸发生变化时,改动你画图的区域大小。
#15
恩 我现在差不多是用你这种思路,做了一个实现了. 现在拉动滚动条,不破碎了
#16
现在有一个问题是,我给panel 设置了背景图片, 但是这个背景图片会被放大. 比图片的实际大小还要大, 有人知道这个是怎么解决嘛?
#17
说以下我自己的做法吧
和pengcwl给我的思路雷同;
写了这么一个类
和pengcwl给我的思路雷同;
写了这么一个类
public class PanelEx : Panel
{
public PanelEx()
{
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true);
}
private Point rectangleTopLeft = new Point(0, 0);
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics dc = e.Graphics;
Bitmap bm = new Bitmap(@"E:\Work\WDO\Devlpment\V1\Main\Source\Code\Pic\b3.jpg");
//这里是处理背景图变大的问题
bm.SetResolution(96, 96);
Size scrolloffset = new Size(this.AutoScrollPosition);
dc.DrawImage(bm, rectangleTopLeft + scrolloffset);
}
}
#1
OnPaint中画,加双缓冲,试试呢
#2
双缓冲的方法 我是这么做的:
1.写了一个类 public class PanelEx : Panel
然后在这个类PanelEx 中写了一个 构造函数
public PanelEx()
{
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true);
}
然后用这个类PanelEx去操作, 但是没有效果
1.写了一个类 public class PanelEx : Panel
然后在这个类PanelEx 中写了一个 构造函数
public PanelEx()
{
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true);
}
然后用这个类PanelEx去操作, 但是没有效果
#3
OnPaint中画
这个怎么画? 能给个例子嘛?
#4
有人帮忙看看不.......
#5
form1.DoubleBuffered=true;
#6
容器类控件在滚动具有大背景图的情况时,会出现抖动,这个是.NET性能造成的。目前除了自己编写需要的控件外,别无其他完美的方法。
#7
c#高级编程里面有关于滚动条滚动后重新绘制滚动区域的例子,可以参考下
也就是说只是重新绘制可显示的部分即可
也就是说只是重新绘制可显示的部分即可
#8
在OnPanit里面重画 注意 只要画 能显示部分即可
#9
目前在看这一部分章节,希望能找到解决方法 谢谢了
#10
搞不定啊, 有没有人帮忙看下
#11
你可以继承panel写一个自己的myPanel,在myPanel 中重写OnPaint事件,进行显示区域重绘,然后再自己的myPanel 中放一个size大于myPanel 的pictureBox,把图片放到picturebox里面,别设置为背景图
然后再用c#高级编程里面那个例子
然后再用c#高级编程里面那个例子
#12
panel 里放稍大点的背景图片都会闪! 我当时也搞了好久... 最后还是没搞出来。 用pictureBox 代替了!
#13
双缓存能好一点,也只是好一点而已。
#14
可不可以将图片直接画到Panel上,在Panel尺寸发生变化时,改动你画图的区域大小。
#15
恩 我现在差不多是用你这种思路,做了一个实现了. 现在拉动滚动条,不破碎了
#16
现在有一个问题是,我给panel 设置了背景图片, 但是这个背景图片会被放大. 比图片的实际大小还要大, 有人知道这个是怎么解决嘛?
#17
说以下我自己的做法吧
和pengcwl给我的思路雷同;
写了这么一个类
和pengcwl给我的思路雷同;
写了这么一个类
public class PanelEx : Panel
{
public PanelEx()
{
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true);
}
private Point rectangleTopLeft = new Point(0, 0);
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics dc = e.Graphics;
Bitmap bm = new Bitmap(@"E:\Work\WDO\Devlpment\V1\Main\Source\Code\Pic\b3.jpg");
//这里是处理背景图变大的问题
bm.SetResolution(96, 96);
Size scrolloffset = new Size(this.AutoScrollPosition);
dc.DrawImage(bm, rectangleTopLeft + scrolloffset);
}
}