c# 画在控件上画圆环应力云图

通过画100个半径一次增加的同心圆,并且颜色与应力值对应,达到应力云图的效果

 //开始画图,
            float rr = 0;//画圆输入半径必须是float数值形式
            int red = 100;      //rgb里面的红,初始值任意
            int green = 100;    //rgb里面的绿
            int blue = 100;     //rgb里面的蓝 
            double stress = 0;
            Graphics gr = panel5.CreateGraphics();  //在panel5上画应力云图

            int xr = panel5.Width * 3 / 5;    定义作画开始的坐标
            int yr = panel5.Height / 2;





for (int i = 1; i < 100; i++)        //i的初始值决定内径的大小
            {

                stress = arr_Sigmar[i]; //arr_Sigmar用来存放100个内径值对应的应力值,事先算好存进去
                stress = (stress - minr) / (maxr - minr);  //计算应力值占总的应力长度百分比,用来决定圆环的颜色
                rr = (float)(r2 + (i - 1) * h);  //
                rr = rr * 350 / 1000;   //控制图像大小


                if (0.8 <= stress & stress <= 1)         //1鲜红
                {
                    red = 255;
                    green = 0;
                    blue = 0;
                }
                else if (0.7 < stress & stress <= 0.8)//2胡萝卜色
                {
                    red = 237;
                    green = 145;
                    blue = 33;
                }
                else if (0.6 < stress & stress <= 0.7)//3黄色
                {
                    red = 255;
                    green = 255;
                    blue = 0;
                }
                else if (0.5 < stress & stress <= 0.6)//4黄绿色
                {
                    red = 127;
                    green = 255;
                    blue = 0;
                }
                else if (0.4 < stress & stress <= 0.5)//5绿色
                {
                    red = 0;
                    green = 255;
                    blue = 0;
                }

                else if (0.3 < stress & stress <= 0.4)//6碧绿色
                {
                    red = 64;
                    green = 224;
                    blue = 208;
                }
                else if (0.2 < stress & stress <= 0.3)//7青色
                {
                    red = 0;
                    green = 255;
                    blue = 255;
                }
                else if (0.1 < stress & stress <= 0.2)//8钴色
                {
                    red = 30;
                    green = 144;
                    blue = 255;
                }
                else if (0 < stress & stress <= 0.1)//9蓝色
                {
                    red = 0;
                    green = 0;
                    blue = 255;
                }
                else if (1 < stress & stress < 0)
                {
                    MessageBox.Show("应力值不在取色范围");
                    break;
                }
                Color mycolor = Color.FromArgb(255, red, green, blue);
                Pen p2 = new Pen(mycolor, 4);
                gr.DrawEllipse(p2, xr - 2 * rr, yr - 2 * rr, rr * 4, rr * 4); //每次的圆半径为i*2n,则坐标值必须为x-n*i,这样才能保证是同心圆
            }
            gr.Dispose();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值