zoukankan      html  css  js  c++  java
  • 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
    效果如下

  • 相关阅读:
    Android签名详解(debug和release)
    Java反射机制的学习
    Android应用开发中如何使用隐藏API(转)
    asp.net购物车,订单以及模拟支付宝支付(二)---订单表
    asp.net购物车,订单以及模拟支付宝支付(一)---购物车表及添加购物车流程
    asp.net权限控制的方式
    .Net使用程序发送邮件时的问题
    Word2016“此功能看似已中断 并需要修复”问题解决办法
    C#字符串来袭——因为爱,所以爱
    C#时间的味道——任时光匆匆我只在乎你
  • 原文地址:https://www.cnblogs.com/simadi/p/15251388.html
Copyright © 2011-2022 走看看