http://blog.sina.com.cn/s/blog_402c071e0102x4rl.html

 
 以下内容,对于想要使用C#实现PNG图片背景透明显示,同时动态显示时无闪烁问题的人来说,是非常有帮助的。网络上很难找到完整的解决方案。以下是我搜集到,并加以验证过的完整解决方案。
文章一:
《How to Use Transparent Images and Labels in Windows
Forms》
《在Windows Forms 中怎样使用透明图片和透明标签》
     
  这篇文章,提供了C#例程,讲解非常清楚,代码非常好。
 
文章二:
  《C#画图解决闪烁问题》之《使用 GDI+ 双缓冲 解决绘图闪烁问题》
 
以下是文章部分内容:
使用 GDI+ 双缓冲 解决绘图闪烁问题
现在的问题是很多人不知道怎么怎么使用GDI+ 双缓冲
 
public partial class Form1 : Form
    {
     
  //记录矩形位置的变量
     
  Point p = Point .Empty ;
     
  Point location = new Point(0, 0);
     
  int x = 0;
     
  int y = 0;
 
     
  public Form1()
     
  {
     
     
InitializeComponent();
     
     
//采用双缓冲技术的控件必需的设置
     
     
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
     
     
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
     
     
this.SetStyle(ControlStyles.UserPaint, true);
     
  }
     
  protected override void OnPaint(PaintEventArgs
e)
     
  {
     
     
base.OnPaint(e);
     
      Graphics g
= e.Graphics;
     
     
g.FillRectangle(Brushes.Black, x, y, 200, 200);
     
  }
     
  private void Form1_MouseDown(object sender,
MouseEventArgs e)
     
  {
     
      if
(e.Button == MouseButtons.Right) return;
     
      p =
e.Location;
     
  }
     
  private void Form1_MouseUp(object sender,
MouseEventArgs e)
     
  {
     
      if
(e.Button == MouseButtons.Right) return;
     
      location.X
+= e.X - p.X;
     
      location.Y
+= e.Y - p.Y;
     
      p =
Point.Empty;
     
  }
     
  private void Form1_MouseMove(object sender,
MouseEventArgs e)
     
  {
     
   if (p == Point.Empty)
return;
     
      x = e.X -
p.X + location.X;
     
      y = e.Y -
p.Y + location.Y;
     
     
this.Invalidate(true);//触发Paint事件
     
  }
   
 }
这个简单的例子实现了用鼠标拖动窗口中矩形,利用双缓冲技术使动画过程不会产生闪烁.

C# 实现PNG文件的背景透明显示,解决动态显示闪烁问题 【转】的更多相关文章

  1. TortoiseSVN文件夹及文件状态图标不显示解决方法

    win8 64位系统,原本svn是好用的,安装了klive金山快盘后,svn图标都不显示了.最后通过修改注册表解决: win+R调出运行框,输入regedit,打开注册表编辑器. HKEY_LOCAL ...

  2. iOS UITableViewCell点击时子视图背景透明的解决方法

    在做iOS项目的开发中,UITableView控件的应用十分广泛.在进行自定义UITableViewCell时,经常遇到这样的问题:在UITableViewCell上面添加了一个有背景颜色的子视图,当 ...

  3. QSplashScreen无法背景透明的解决办法(强制StyleSheet生效)

    setWindowFlags(Qt::WindowStaysOnTopHint | Qt::SplashScreen | Qt::FramelessWindowHint); setAttribute( ...

  4. QSplashScreen无法背景透明的解决办法

    setWindowFlags(Qt::WindowStaysOnTopHint | Qt::SplashScreen | Qt::FramelessWindowHint); setAttribute( ...

  5. 使IE6下PNG背景透明的七种方法任你选

    原文地址:http://blog.csdn.net/mosliang/article/details/6760028 相信如何解决png在ie6下透明的问题困扰了很多人.为了追求更好的页面效果,很多人 ...

  6. 关于ie6下png背景透明

    今天我突破了一个技术难关,真的是头都大了.. 关于ie6下png背景透明的解决方法,我就不多说了,网上有很多解决方法,我用的是其中的一种: <script type="text/jav ...

  7. android 自定义Dialog背景透明及显示位置设置

    先贴一下显示效果图,仅作参考: 代码如下: 1.自定义Dialog public class SelectDialog extends AlertDialog{ public SelectDialog ...

  8. IE6 背景透明

    IE6 背景透明 第 1 种方法:定义一个样式,给某个div应用这个样式后,div的透明png背景图片自动透明了.(注意两处图片的路径写法不一样,本例中,icon_home.png图片与html文件在 ...

  9. gif修改背景透明

    1.用ImageReady打开,将选中所有帧,右键选择“恢复为背景”. 2.打开“颜色板”,点击左下角的惊叹号,用吸色器点击背景,颜色板自动选中了背景色,将其映射为透明. 3.文件->将优化结果 ...

随机推荐

  1. ThinPHP3.2中 addAll()批量插入数据

    thinkphp中model类的addAll()方法可以将数据同时添加到数据库中. 1 2 3 4 5 6 // 批量添加数据 (only MySQL) $user = M('user'); //ar ...

  2. Java使用AES加密解密

    AES加密机制: 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准. 这个标准用来替代原先的 ...

  3. CodeForces 140C New Year Snowmen(堆)

    题面 CodeForces 题解 因为要保证两两不同,所以不能单纯的开堆来维护,堆维护一个二元组,个数为第一关键字,编号为第二关键字,对于一个相同的颜色,统计一下这个颜色的个数再用堆来维护就好了. # ...

  4. [ 转载 ] Centos安装Mysql数据库纪录

    yum install mysql-community-server依赖关系错误 https://www.cnblogs.com/lzj0218/p/5724446.html rpm -qa|grep ...

  5. SELECT INTO和INSERT INTO SELECT(SQL Server)

    --自动创建了target_table表,并复制source_table表的数据到target_table select name,age into target_table from source_ ...

  6. MySQL数据库sql语句

    零.用户管理: 1.新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow'; 2.更改密码: >SET PASSWORD FOR name=PAS ...

  7. BZOJ.1032.[JSOI2007]祖码(区间DP)

    题目链接 BZOJ 洛谷 AC代码: 区间DP,f[i][j]表示消掉i~j需要的最少珠子数. 先把相邻的相同颜色的珠子合并起来. 枚举方法一样,处理一下端点可以碰撞消除的情况就行. 当然合并会出现问 ...

  8. NOIP2018 RP++

    飞吧,不用看向地面. NOIP,RP++.

  9. CDOJ 1402 三角形棋盘上的博弈游戏 状压DP

    三角形棋盘上的博弈游戏 题目连接: http://mozhu.today/#/problem/show/1402 Description 柱爷有天上课无聊,于是和同桌卿学姐一起下一种奇特的棋: 棋盘如 ...

  10. Git_撤销修改

    自然,你是不会犯错的.不过现在是凌晨两点,你正在赶一份工作报告,你在readme.txt中添加了一行: $ cat readme.txt Git is a distributed version co ...