zoukankan      html  css  js  c++  java
  • C# Winform代码片段-大二下学期的垃圾代码

    1.图片缩放

    using System;
    using System.Windows.Forms;
    using System.Drawing;
    class haha : Form
    {
        static void Main()
        {
            Application.Run(new haha());
        }
        Bitmap bit;
        int x, y;
        haha()
        {
            ClientSize = new Size(400, 400);
            bit = new Bitmap(800, 800);
            Graphics.FromImage(bit).DrawImage(Image.FromFile("beauty.jpg"),new Rectangle(new Point(0,0),new Size(bit.Width,bit.Height)));
            KeyDown += roll;
            MouseWheel += zoom;
            x = y = 0;
        }
        void zoom(object o, MouseEventArgs e)
        {
            if ((bit.Width < 100||bit.Height<100)&&e.Delta<0) return;
            if (bit.Width + e.Delta < 0 || bit.Height + e.Delta < 0) return;
            Bitmap b = new Bitmap(bit.Width + e.Delta, bit.Height + e.Delta);
            Graphics.FromImage(b).DrawImage(bit, new Rectangle(0, 0, b.Width, b.Height));
            bit = b;
            draw();
        }
        void draw()
        {
            if (x >= bit.Width - ClientSize.Width) x = bit.Width - 1 - ClientSize.Width;
            if (y >= bit.Height - ClientSize.Height) y = bit.Height - ClientSize.Height - 1;
            if (x < 0) x = 0;
            if (y < 0) y = 0;
            Bitmap b = new Bitmap(ClientSize.Width, ClientSize.Height);
            int i, j;
            for (i = 0; i < ClientSize.Width; i++)
                for (j = 0; j < ClientSize.Height; j++)
                {
                    if (x + i >= bit.Width || y + j >= bit.Height)
                        b.SetPixel(i, j, Color.AliceBlue);
                    else 
                        b.SetPixel(i, j, bit.GetPixel(x + i, y + j));
                }
            CreateGraphics().DrawImage(b, 0, 0);
        }
        void roll(object o, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Up: y -= 10; break;
                case Keys.Down: y += 10; break;
                case Keys.Right: x += 10; break;
                case Keys.Left: x -= 10; break;
            }
            draw();
        }
    }
    

    2.位图操作-乱画

    using System.Drawing;
    using System.Windows.Forms;
    using System;
    class haha:Form
    {
        Bitmap bit;
        Random r = new Random();
        static void Main()
        {
            Application.Run(new haha());
        }
        void circle(int xx, int yy, int r,Color c)
        {
            int x; double y;
            for (x = xx - r; x < xx + r; x++)
            {
                y = Math.Sqrt(r * r - (xx - x) * (xx - x));
                if (x < 0 || yy - y < 0 || x >= bit.Width || yy + y >= bit.Height) continue;
                bit.SetPixel(x, (int)(y+yy), c);
                bit.SetPixel(x, (int)( yy-y), c);
            }
        }
        void line(int x1,int y1,int x2,int y2,Color c)
        {
            int fx, fy, tx, ty;
            if(x1==x2){
                 if(y1>y2){
                    fx=x2;fy=y2;
                    tx=x1;ty=y1;
                }
                else {
                    fx=x1;fy=y1;
                    tx=x2;ty=y2;
                }
                int i;
                for (i = fy; i < ty; i++)
                {
                    bit.SetPixel(x1, i, c);
                }
                CreateGraphics().DrawImage(bit,0,0);
                return;
            }
            if (x1 > x2)
            {
                fx = x2; fy = y2;
                tx = x1; ty = y1;
            }
            else
            {
                fx = x1; fy = y1;
                tx = x2; ty = y2;
            }
            double k = (ty - fy) / (tx - fx);
            double y;
            int x;
            for (x = fx; x < tx; x++)
            {
                y = k * x + ((double)y1 - k * x1);
                bit.SetPixel(x, (int)y, c);
            }
            CreateGraphics().DrawImage(bit, 0, 0);
        }
        haha()
        {
            ClientSize = new Size(500, 500);
            bit = new Bitmap(ClientSize.Width, ClientSize.Height);
            Graphics.FromImage(bit).Clear(Color.White);
            Timer t1 = new Timer();
            t1.Interval = 5000;
            t1.Tick += draw_line;
            //t1.Start();
            Timer t2 = new Timer();
            t2.Interval = 10;
            t2.Tick += draw_circle;
            t2.Start();
        }
        void draw_line(object o,EventArgs e)
        {
            line(r.Next()%ClientSize.Width, r.Next()%ClientSize.Height, r.Next()%ClientSize.Width, r.Next()%ClientSize.Height, Color.FromArgb(r.Next()));
        }
        void draw_circle(object o, EventArgs e)
        {
            int rr=r.Next() % 100 + 1;
            int xx=r.Next() % ClientSize.Width;
            int yy=r.Next() % ClientSize.Height;
            for (int i = 0; i < 16&&rr>i;i++ )
                circle(xx,yy , rr-i, Color.FromArgb(r.Next()));
            CreateGraphics().DrawImage(bit, 0, 0);
        }
    }
    

    3.图片旋转

        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                KeyDown += draw;
                bitmap = new Bitmap(Image.FromFile("0.jpg"));
                ClientSize = new Size(700,700);
            }
            Bitmap rotate(Bitmap source)
            {
                Bitmap bit = new Bitmap(source.Height, source.Width);
                for (int x = 0; x < bit.Width; x++)
                {
                    for (int y = 0; y < bit.Height; y++)
                    {
                        bit.SetPixel(x, y, source.GetPixel(bit.Height- y-1, x));
                    }
                }
                return bit;
            }
            Bitmap bitmap;
            void draw(object o, EventArgs e)
            {
                CreateGraphics().Clear(Color.Black);
                bitmap = rotate(bitmap);
                CreateGraphics().DrawImage(bitmap, 0, 0);
            }
        }
    

    4.鼠标单击拖动图片

    using System;
    using System.Windows.Forms;
    using System.Drawing;
    class window : Form
    {
        Rectangle rec=new Rectangle(23,23,23,23);
        Bitmap b=new Bitmap("beauty.jpg");
        int x, y;
        int dx, dy;
        bool move;
        public window(){
            MouseClick +=click;
            MouseMove += OnMove;
            Paint += paint;
            Size = new Size(800,800);
            x = y = 0;
        }
        void OnMove(object o, MouseEventArgs e)
        {
            if (move)
            {
                Bitmap bit = new Bitmap(Width,Height);
                Graphics g = Graphics.FromImage(bit);
                g.Clear(Color.AliceBlue);
                g.DrawImage(b, e.X+dx, e.Y+dy);
                for (int i = 10; i < bit.Width; i++)
                    bit.SetPixel(i, 100, Color.Red);
                CreateGraphics().DrawImage(bit, 0, 0);
            }
        }
        void paint(object o, EventArgs e)
        {
            CreateGraphics().DrawImage(b,0,0);
        }
        void click(object o, MouseEventArgs e)
        {
            if (e.X > x && e.X < x + b.Width && e.Y > y && e.Y < y + b.Height && move == false) { move = true; dx = x - e.X; dy = y - e.Y; }
            else if (move == true)
            {
                x = e.X+dx; y = e.Y+dy;
                move = false;
            }
        }
        
        public static void Main()
        {  
            Application.Run(new window());
        }
    }
    

    5.没有边框的窗口

        public partial class Form1 : Form
        {
            public Form1()
            {
                ClientSize = Screen.PrimaryScreen.Bounds.Size;
                FormBorderStyle = FormBorderStyle.None;
                Paint += draw;
                TransparencyKey = DefaultBackColor;
                ShowInTaskbar = false;
            }
            void draw(object o, EventArgs e)
            {
                CreateGraphics().Clear(DefaultBackColor);
                Bitmap bit=new Bitmap(ClientSize.Width,ClientSize.Height);
                bit.MakeTransparent(Color.White);
                Graphics.FromImage(bit).DrawString("东大微雕
    文韬武略
    天下第一", new Font(new FontFamily("Consolas"),200,GraphicsUnit.Pixel),new SolidBrush(Color.Red),new Rectangle(30,30,ClientRectangle.Right,ClientRectangle.Bottom));
                //BackgroundImage = bit;
                //释放上面这句就会导致闪烁
                CreateGraphics().DrawImage(bit,ClientRectangle);
            }
        }
    

    6.全屏的窗口

        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                Size = MaximumSize;
                WindowState = FormWindowState.Maximized;
                FormBorderStyle = FormBorderStyle.None;
                Paint += paint;
                files= Directory.GetFiles(Directory.GetCurrentDirectory(),"*.jpg");
                KeyDown += down;
            }
            void down(object o, KeyEventArgs e)
            {
                index++;
                Invalidate();
            }
            string[] files;
            int index=0;
            void paint(object o, PaintEventArgs e)
            {
                Bitmap bit = new Bitmap(ClientSize.Width,ClientSize.Height);
                Graphics.FromImage(bit).DrawImage(Image.FromFile(files[index%files.Length]), ClientRectangle);
                e.Graphics.DrawImage(bit,0,0);
            }
        }
    

    7.分工演示器

        public partial class Form1 : Form
        {
            SpeechSynthesizer teller = new SpeechSynthesizer();
            void tell(string s)
            {
                teller.Speak(s);
            }
            void crossLine(int from, int to)
            {
                int w = bit.Width / (size + 1);
                int h = bit.Height / (size + 1);
                Graphics g = Graphics.FromImage(bit);
                Pen p = new Pen(new SolidBrush(Color.Gold),4);
                g.DrawLine(p, work[from] * w + w + w / 2, from * h + h + h / 2, work[to] * w + w + w / 2, to * h + h + h / 2);
                g.DrawLine(p, work[to] * w + w + w / 2, from * h + h + h / 2, work[from] * w + w + w / 2, to * h + h + h / 2);
                CreateGraphics().DrawImage(bit,0,0);
            }
            void go()
            {
                int i, j;
                bool changed = true;
                while (changed)
                {
                    tell("只要有变化,那就接着调整.调整哇调整,一直到没法再调整了");
                    changed = false;
                    for (i = 0; i < size; i++)
                    {
                        for (j = size - 1; j >= 0; j--)
                        {
                            if (a[i, work[j]] + a[j, work[i]] < a[i, work[i]] + a[j, work[j]])
                            {
                                crossLine(i, j);
                                tell("工人" + man[i] + "干任务" + (char)(work[i] + 'A') + "需要" + a[i, work[i]] + "的时间");
                                tell("工人" + man[j] + "干任务" + (char)(work[j] + 'A') + "需要" + a[j, work[j]] + "的时间");
                                tell("他们交换一下任务,岂不是更快");
                                int temp = work[i];
                                work[i] = work[j];
                                work[j] = temp;
                                draw();
                                changed = true;
                            }
                        }
                    }
                }
            }
            int[] work;
            public Form1()
            {
                InitializeComponent();
                WindowState = FormWindowState.Maximized;
                Text = "分工演示器-written for jiege,made by weidiao";
                var set = teller.GetInstalledVoices();
                teller.SelectVoice(set[0].VoiceInfo.Name);
                init();
                Paint += delegate
                {
                    draw();
                    go();
                    tell("杰哥,你可以百度一下模拟淬火算法,这种方法适用于解决NP问题,但它的缺点就是最后所求的结果不一定对");
                    tell("这种方法能够保证得到局部最优解,至于有多么接近最优解,这取决于你所选择的初始值");
                    tell("于是,我们可以大量的用很多初始值进行迭代优化,从中选取最好的");
                };
                Resize += delegate
                {
                    bit = new Bitmap(this.ClientSize.Width, this.ClientSize.Height);
                    draw();
                };
            }
            Bitmap bit;
            char[] man = "甲乙丙丁戊己庚辛壬癸".ToCharArray();
            void draw()
            {
                Graphics g = Graphics.FromImage(bit);
                g.Clear(Color.Black);
                int i, j;
                int w = bit.Width / (size + 1);
                int h = bit.Height / (size + 1);
                g.FillRectangle(new SolidBrush(Color.Gray), new Rectangle(0, 0, w - 2, h - 2));
                g.DrawLine(new Pen(new SolidBrush(Color.Black), 2), 0, 0, w, h);
                g.DrawString("任务", new Font("楷体", 20, FontStyle.Bold), new SolidBrush(Color.Crimson), new RectangleF(w / 2, 0, w / 2, h / 2));
                g.DrawString("人物", new Font("楷体", 20, FontStyle.Bold), new SolidBrush(Color.DarkOrange), new RectangleF(0, h / 2, w / 2, h / 2));
                for (i = 0; i < size; i++)
                {
                    RectangleF rec = new RectangleF(w + w * i, 0, w - 2, h - 2);
                    g.FillRectangle(new SolidBrush(Color.Gray), rec);
                    g.DrawString((char)(i + 'A') + "", new Font("Consolas", 40, FontStyle.Bold), new SolidBrush(Color.Crimson), rec);
                }
                for (i = 0; i < size; i++)
                {
                    RectangleF rec = new RectangleF(0, h + i * h, w - 2, h - 2);
                    g.FillRectangle(new SolidBrush(Color.Gray), rec);
                    g.DrawString(man[i] + "", new Font("Consolas", 40, FontStyle.Bold), new SolidBrush(Color.DarkOrange), rec);
                }
                for (i = 0; i < size; i++)
                {
                    for (j = 0; j < size; j++)
                    {
                        RectangleF rec = new RectangleF(j * w + w, h + i * h, w - 2, h - 2);
                        Color back = work[i] == j ? Color.Gainsboro : Color.Gray;
                        g.FillRectangle(new SolidBrush(back), rec);
                        g.DrawString(a[i, j] + "", new Font("Consolas", 40, FontStyle.Bold), new SolidBrush(Color.Red), rec);
                    }
                }
                CreateGraphics().DrawImage(bit, 0, 0);
            }
            int[,] a;
            Random r = new Random();
            int size;
            void init()
            {
                size = 4;
                a = new int[size, size];
                work = new int[size];
                int i, j;
                for (i = 0; i < size; i++) work[i] = i;
                for (i = 0; i < size; i++)
                {
                    for (j = 0; j < size; j++)
                    {
                        a[i, j] = r.Next() % 20 + 2;
                    }
                }
            }
        }
    
  • 相关阅读:
    slf4j简介(一)
    Spring Framework--AOP(1)--
    Spring Framework--Data Access(1)--Transaction Management(2)
    Spring Framework--Data Access(1)--Transaction Management(2)
    Spring Framework--Data Access(1)--Transaction Management(1)
    Spring Framework--Ioc Container(1)--Dependencies(2)--depends-on、lazy-init、autowire、mothod injection
    车票100–火车票接口开发文档
    SAE AppConfig的重定向和Url重写
    MySQL Order By Rand()效率
    面试时应该如何应答?
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/6165443.html
Copyright © 2011-2022 走看看