解决winform中的panel重绘闪烁问题

利用winform开发时,可能都会遇到一个问题,就是在panel中不停的重绘图形时,图形会不停的闪烁。要解决这个办法只需要开启双缓冲即可,由于初学c#,理解的不是很深,所以不多做解释。以下代码亲测可以解决这个问题:

首先创建一个自己的panel类:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
using System.Windows.Forms;  
   
namespace Test  
{  
    //开启双缓冲  
    class MyPanel:Panel  
    {  
        public MyPanel()  
        {  
            SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.SupportsTransparentBackColor, true);  
        }  
    }  
}  
然后重新生成解决方法,就会发现工具箱中多了一个自己写的panel控件,在画图形的时候,画在自己的panel上就可以了。由于自己的panel继承自Panel类,所以Panel中的方法都可以使用。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
WinForm ,如果你需要重绘 Panel 控件的滚动条,可以通过以下步骤来实现: 1. 继承 Panel 控件,自定义一个 MyPanel 类。 ```csharp public class MyPanel : Panel { // 重写 OnPaint 方法 protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); // 在此处绘制滚动条 } } ``` 2. 在 MyPanel重写 OnPaint 方法,在该方法绘制滚动条。 ```csharp protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); // 绘制垂直滚动条 if (this.VerticalScroll.Visible) { var thumbRect = this.VerticalScroll.ThumbRect; var trackRect = this.VerticalScroll.TrackRect; // 绘制轨道 e.Graphics.FillRectangle(Brushes.Gray, trackRect); // 绘制滑块 e.Graphics.FillRectangle(Brushes.DarkGray, thumbRect); } // 绘制水平滚动条 if (this.HorizontalScroll.Visible) { var thumbRect = this.HorizontalScroll.ThumbRect; var trackRect = this.HorizontalScroll.TrackRect; // 绘制轨道 e.Graphics.FillRectangle(Brushes.Gray, trackRect); // 绘制滑块 e.Graphics.FillRectangle(Brushes.DarkGray, thumbRect); } } ``` 在上述代码,我们首先判断垂直滚动条和水平滚动条是否可见,如果可见,则获取滑块和轨道的矩形区域,然后使用 GDI+ 绘制滑块和轨道。 3. 将 Panel 控件替换为 MyPanel 控件,即可在运行时看到自定义的滚动条。 注意:如果你的 Panel 控件包含其他控件,需要考虑它们的位置和大小,以确保滚动条的正确绘制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值