c# winform中 Form_paint事件绘制的图片怎么转换为窗体背景,避免重绘时闪烁

总是调用Form_paint事件,出现严重闪烁,用双重缓没改变!看看这样行不行的通?帮帮忙
Graphics g = this.CreateGraphics();//创建绘图对象
Pen a = new Pen(Color.Chocolate, 2);
int jc = 51, jc1 = 25;
int jc4 = 301, jc3 = 25;
for (int ww = 0; ww <= 4; ww++)//画上家的横线
{
g.DrawLine(a, 25, jc, 425, jc);
jc += 50;
}
for (int ee = 0; ee <= 8; ee++)//画上家的纵线
{
g.DrawLine(a, jc1, 51, jc1, 250);
jc1 += 50;
}
for (int ww1 = 0; ww1 <= 4; ww1++)
{
g.DrawLine(a, 25, jc4, 425, jc4);
jc4 += 50;
}
for (int ee = 0; ee <= 8; ee++)
{
g.DrawLine(a, jc3, 301, jc3, 501);
jc3 += 50;
}

a.Dispose();
g.Dispose();
移动下棋子出现严重重绘 ,是FORM_paint里面的

最好不要手动调用paint事件啊,你可以在你需要刷新的地方强制刷新窗口即可
另外就是paint事件处理函数中不要放与绘图无关的代码,可以在别的函数中算好后在paint中获取。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-04
1,使用双缓冲试试
2,应该是放到”重写OnPaint事件“里吧
实在还是不行就不要整个工作区重绘,而是重绘一个棋子,这样闪烁肯定没有这么严重
第2个回答  2010-05-03
看看哪样行不行的通?

C# panel重写paint事件,闪烁怎么办
1,如果是集成类,在控件构造函数中, 设置双缓冲 在构造函数里面 SetStyles(DoubuleBuffer...),panel的话直接在属性里面设置吧 2如果控件大小不变,尽可能的给图片设置到背景 3,如果控件的UI比较复杂的话 在控件里面OnSizeChanged里面写个函数 当尺寸变化时候 给新的图绘制到一个bitmap里面 然后调用重绘...

c#实现实时曲线的绘制,防止频闪
建议:PaintEventArgs中有ClipRectangle属性,是用来描述需要重绘的位置大小。只需要更新这个部分就可以了。其实windows中的双缓冲就是把背景生成图片在刷新到界面上,你现在做的和双缓冲没啥区别了。另外你可以把panel换成picturebox尝试一下。

C# winform 编程 控件背景透明问题
方法1、要实现C# WinForm中的控件与背景的透明,可以通过设置控件的BackColor属性为Transparent,同时设置其父控件。方法2、 现有一PictureBox控件,十多个Label以及Button,那么只将这些Label和Button放入Panel中。同时在Form_Load事件中加入如下代码即可实现背景透明: this.picturebox1.SendToBack();\/\/将背景图片放到最下面 ...

我有两张Winform主窗体的背景图片,在运行时怎么样切换背景图片,就像...
另外,具体应用时,可能要考虑把这些东西放置到Paint或erasebkground等事件。c# 2.0 给MDI主窗口添加背景最简单的办法,4句代码搞定 一、将MDI主窗口的IsMdiContainer设为 False,将背景图片放到资源文件中,资源名为BackgroundImage 二、在MDI主窗口的构造函数中InitializeComponent();之后加下面4行代码 Mdi...

C#:Windows Form中,Form.Paint事件在哪些情况下会触发?
凡是有必要重绘窗体的时候都会触发,如:最小化,最大化的时候,窗体需要重绘,被其它窗体挡住,然后又重新显示出来,也需要重绘,移动窗体的时候,等等...

C# 如何添加 Form_paint事件?
在Form1的Events列表里添加一个Paint的处理过程 然后在生成的Form1_Paint中加入绘图代码,比如 void Form1_Paint(object sender, PaintEventArgs e){ e.Graphics.DrawEllipse(Pens.Blue, ClientRectangle);} 或者你可以手动添加 private void Form1_Load(object sender, EventArgs e){ this.Paint += ...

请教高手一个关于登录窗体不规则的方法,C#下,实现不规则登录窗体,例如...
1. 新建windows application 2. 选择窗体,找到BackgroundImage属性,点击打开新的窗口,选择下面的导入资源文件,选择你的不规则的BMP图片 3. 找到窗体的TansparencyKey,将它设置为你背景图片的背景色(如黄色)4. 找到窗体的FormBorderStyle,将其设置为none,即不显示标题栏 5. 运行 ...

C# winform 当移动窗口的时候,绘图就会改变,怎么使移动窗口的时候,不...
在移动事件中先记录原有控件的坐标,移动结束后恢复原有坐标,再次重绘

C# 如何设置WinForm窗体样式
(15)ActiveControl属性:用来获取或设置容器控件中的活动控件。(16)ActiveMdiChild属性:用来获取多文档界面(MDI)的当前活动子窗口。(17)AutoScroll属性:用来获取或设置一个值,该值指示窗体是否实现自动滚动。(18)BackColor属性:用来获取或设置窗体的背景色。(19)BackgroundImage属性:用来获取或设置窗体的背景图像。(20)...

winform中(C#):在图片上画了一个矩形,为什么非要刷新才能显示矩形?_百度...
Paint事件主要用于告诉程序什么时候要在窗口上显示输出。在C#语言中几乎所有控件全部都是通过这个Paint事件来进行绘制的。想正确的使用Paint事件首先我们要先了解跟这个Paint事件有关联的PaintEventHandler委托,PaintEventHandler是定义在System.Windows.Forms名词空间下的委托,这个委托参数中有一个PaintEventArgs的...

相似回答