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
    效果如下

  • 相关阅读:
    J2ME游戏开发之层:动画
    HTTPClient
    Objectc 类的定义
    python占位符介绍及操作方法
    selenium IE浏览器运行很慢解决方法
    python eval()用法
    使用MySQL执行update时报错:You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences
    python之字符串格式化(format)
    Python问题:UnboundLocalError: local variable 'xxx' referenced before assignment
    JS滚动页面操作
  • 原文地址:https://www.cnblogs.com/simadi/p/15251388.html
Copyright © 2011-2022 走看看