• winForm 图片实现自动旋转,两个图片透明重叠


    核心代码如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    public Bitmap picRotate(Bitmap bmp, int angle)
        Bitmap reBmp = new Bitmap(bmp.Width, bmp.Height);
        Graphics g = Graphics.FromImage(reBmp);
        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;//选择模式
        g.TranslateTransform((float)bmp.Width / 2, (float)bmp.Height / 2); //参数为旋转中心
        g.RotateTransform(angle);//设置旋转角度
        g.TranslateTransform(-(float)bmp.Width / 2, -(float)bmp.Height / 2);
        g.DrawImage(bmp, new Point(0, 0));
        return reBmp;//返回旋转后的图片
    }
     
    public void Transform()
    {
        Bitmap bmp = new Bitmap(Resources.动效2);
        pictureBox1.BackgroundImage = bmp;
        Bitmap bmp1 = new Bitmap(Resources.动效4);//bmp即为我们的原型图片
        pictureBox2.BackgroundImage = bmp1;//将图片作为picturebox背景,方便展示
        this.BeginInvoke((EventHandler)(delegate
        {
            pictureBox2.Parent = pictureBox1;//在box1上显示Box2
        }));
        int angle = 0;
        int angle1 = 360;
        while (true)
        {
            this.BeginInvoke((EventHandler)(delegate
            {
                pictureBox1.BackgroundImage = picRotate(bmp, angle);//将旋转后的图片设置为picturebox1背景
            }));
            angle += 15;//每次增加5度
            if (angle >= 360)
            {
                angle = 0;
            }
            this.BeginInvoke((EventHandler)(delegate
            {
                pictureBox2.BackgroundImage = picRotate(bmp1, angle1);//将旋转后的图片设置为picturebox2背景
            }));
            angle1 -= 15;//每次减5度
            if (angle1 <= 0)
            {
                angle1 = 360;
            }
            Thread.Sleep(50);
        }
    }
    /// <summary>
    /// 调用
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button1_Click(object sender, EventArgs e)
    {
        Thread th = new Thread(Transform);
        th.IsBackground = true;
        th.Start();
    }

    实例源码下载地址:https://pan.baidu.com/s/1Wfzd3BgvgzgERMRqWhWQew 提取码:ivuv
    效果如下

  • 相关阅读:
    Mysql性能优化
    PHP IF判断简写
    PHP与MYSQL事务处理
    js获取select标签选中的值
    oralce 的安装以及plsql的配置的html连接
    mysql 中启动服务的命令 、登录命令、退出命令 mysql 的常用命令
    oracle 中 某个字段的长度不够的sql 语句
    随机获得id的方法
    java中解析excel 批量插入数据库
    java 调用存储过程
  • 原文地址:https://www.cnblogs.com/simadi/p/15251388.html
Copyright © 2020-2023  润新知