控件中添加GIF图片以及运用双缓冲使其不闪烁以及背景是gif时使控件(如panel)变透明

Image img = Image.FromFile(@"C:\Users\joeymary\Desktop\3.gif");
pictureBox1.Image =img.Clone() as Image;
//label1.Image = img.Clone() as Image;
label1.Size = img.Size;
img.Dispose();

label跟pictureBox中均可使用。

由于窗体重绘会导致控件闪烁

方法一:

/// <summary>
/// 重写Form的CreateParams属性,对控件做二次缓冲(double buffer)
/// </summary>
protected override CreateParams CreateParams//牛逼啊!居然不闪了~~~
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000;
return cp;
}
}

第二个方法是设置控件的DoubleBuffered属性,需要注意这一属性是私有的,要设置此属性需要使用反射。

这个方法没试过,毕竟看着晕

public static void SetDoubleBuffered(System.Windows.Forms.Control c)
{
   //请参考下面的博客
   //http://blogs.msdn.com/oldnewthing/archive/2006/01/03/508694.aspx
   if (System.Windows.Forms.SystemInformation.TerminalServerSession)
      return;

   System.Reflection.PropertyInfo aProp =
         typeof(System.Windows.Forms.Control).GetProperty(
               "DoubleBuffered",
               System.Reflection.BindingFlags.NonPublic |
               System.Reflection.BindingFlags.Instance);

   aProp.SetValue(c, true, null);
}

//this.panel1.BackColor = Color.Transparent;//将Panel设为透明
//this.panel1.Parent = this.pictureBox1;//将panel父控件设为背景图片控件
//this.panel1.BringToFront();//将panel放在前面

时间: 2024-08-27 04:33:51

控件中添加GIF图片以及运用双缓冲使其不闪烁以及背景是gif时使控件(如panel)变透明的相关文章

JScrollPane控件中添加其他控件的问题&&JScrollPane设置滚动条&&调整滚动速度

如果要在JScrollPane控件中添加其他控件,不能用下面这种方法 JScrollPane j = new JScrollPane();j.add(new JButton("点击")); 只能通过以下方法添加 JScrollPane j = new JScrollPane(new JButton("点击")); 或者 JScrollPane j = new JScrollPane();j.getViewport().add(new JButton("点击

DateTimePicker在toolStrip控件中添加

toolStrip控件中要添加日期控件时,首先定义宏控件 DateTimePicker BeginTime = new DateTimePicker(); 然后在界面构造函数中,在目标位置插入控件 1 public JILiangTestDetailUI() 2 { 3 InitializeComponent(); 4 5 ToolStripControlHost begin = new ToolStripControlHost(BeginTime); 6 7 this.toolStrip1.I

Hexo中添加本地图片

First 1 把主页配置文件_config.yml 里的post_asset_folder:这个选项设置为true 2 在你的hexo目录下执行这样一句话npm install hexo-asset-image --save,这是下载安装一个可以上传本地图片的插件,来自dalao:dalao的git 3 等待一小段时间后,再运行hexo n "xxxx"来生成md博文时,/source/_posts文件夹内除了xxxx.md文件还有一个同名的文件夹 4 最后在xxxx.md中想引入图

MFC加载PNG图片并实现双缓冲

因为PNG包含Alpha通道,所以不同于BITMAP,在MFC中使用CImage类对其进行处理,通常使用load和draw成员函数. 所以标题的论述可以进一步解释为,使用CImage实现双缓冲. 通常的双缓冲方法为(首先将消息函数afx_msg BOOL OnEraseBkgnd(CDC* pDC)的函数体改为return TRUE): CDC memDC; CBitmap bmp; bmp.CreateCompatibleBitmap(pDC,WINDOW_WIDTH,WINDOW_HEIGH

控件中添加的成员变量value和control的区别

control型变量是这个控件所属类的一个实例(对象)可以通过这个变量来对该控件进行一些设置.而value只是用来传递数据,不能对控件进行其它的操作.control型变量可以获得控件的实例,通过这个变量,你可以操纵控件 value型变量仅仅可以获得该控件的public型变量 如果你添加了一个m_CtrlEdit的control型变量你可以调用控件支持的所有函数,如: m_CtrlEdit.GetStyle(...) 获得控件的输入内容或者说文本内容: CString str_name;m_Ctr

禁止DataGridView控件中添加和删除行

实现效果: 知识运用: DataGridView控件的AllowUserToAddRows AllowUserDeleteRows和ReadOnly属性 实现代码: private void btn_no_Click(object sender, EventArgs e) { dataGridView1.AllowUserToAddRows = false; dataGridView1.AllowUserToDeleteRows = false; dataGridView1.ReadOnly =

MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片

最近有同学问我如何实现MFC基于对话框在图片控件中加载图片?其实使用MFC显示图片的方法各种各样,但是还是有些同学不知道怎样显示.以前在<数字图像处理>课程中完成的软件都是基于单文档的程序,这里介绍两种在对话框picthre控件中显示BMP图片的最简单基础的方法. ~~方法可能并不完美,高手忽略,但是提供一种能运行的方法,希望对刚接触这方面知识的同学有所帮助.可能你觉得文章过于简单或者有些过于详细叙述(点到即可我并不反对),但也为哪些入门同学想想,当初自己也是一头雾水. 一.静态显示bmp图片

在TextView中添加图片

TextView是一个很强大的控件,有时需要在一个控件中同时显示图片和文字,使用TextView很容易实现. 方法一: 聊天软件比如QQ一般都会有发送表情的功能,使用SpannableString+ImageSpan可以很容易实现 [java] view plaincopy private void showImageFace(String s,View v) { Bitmap bitmap; ImageSpan imageSpan; // 创建一个SpannableString对象,以便插入用

Repeater控件中触发按钮事件出现System.ArgumentException: 回发或回调参数无效。在配置中使用 &lt; pages enableEventValidation=&quot;true&quot;/&gt;

今天,在Repeater控件中添加了一个按钮,可是在执行时确提示 System.ArgumentException: 回发或回调参数无效.在配置中使用 < pages enableEventValidation="true"/> <asp:Repeater ID="rpList" runat="server" OnItemCommand="rpList_ItemCommand"> <ItemTem