找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7949|回复: 0
打印 上一主题 下一主题
收起左侧

processing编程画个图玩玩

[复制链接]
跳转到指定楼层
楼主
ID:94349 发表于 2015-11-1 21:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为了方便调色,特用processing代码画个可视颜色色谱图玩玩。
processing源码:
int r=200;
color  c ;
private final int COPIES = 12;
PImage img;
void setup(){
  size(displayWidth,displayHeight);
  background(255);
  stroke(255);
  strokeWeight(2);
  PFont myfont = createFont("KaiTi_GB2312-80.vlw",40);
  textFont(myfont);
  fill(0, 102, 153, 204);
  text("XXX印花调色色谱图",110,80);
  text("XXX印花单色图",width/2+120,80);
  img = loadImage("color.png");
   noLoop();
}

void draw(){
  translate(width/2,height/2-180);
  //draw color circle
   for(int a=0;a<COPIES;a++){
   line(300-width/2,0,300-width/2+r*sin(a*TWO_PI/COPIES),r*cos(a*TWO_PI/COPIES));
   textSize(20);
   switch(a){
       case 0:  //8111
            c = #E80C0C;
            fill(c);
            text("8111",300-width/2+(r+5)*sin((-a+3.5)*TWO_PI/COPIES),(r+5)*cos((-a+3.5)*TWO_PI/COPIES));
             //标注颜料名称
            text("8111",-20,-170+70*a);
            break;
        case 1: //8113
            c = #FF0381;
            fill(c);
            text("8113",300-width/2+(r+5)*sin((-a+3.5)*TWO_PI/COPIES),(r+5)*cos((-a+3.5)*TWO_PI/COPIES));
            text("8113",-20,-170+70*a);
            break;
        case 2:  //8116
           c = #FF00DE;
           fill(c);
           text("8116",300-width/2+(r+15)*sin((-a+3.5)*TWO_PI/COPIES),(r+15)*cos((-a+3.5)*TWO_PI/COPIES));
           text("8116",-20,-170+70*a);
            break;
       case 3:  //8118
            c = #D800CB;
            fill(c);
            text("8118",300-width/2+(r+20)*sin((-a+3.5)*TWO_PI/COPIES),(r+20)*cos((-a+3.5)*TWO_PI/COPIES));
            text("8118",-20,-170+70*a);
            break;
        case 4:  //8701
            c = #C300FF;
            fill(c);
             text("8701",300-width/2+(r+30)*sin((-a+3.2)*TWO_PI/COPIES),(r+30)*cos((-a+3.2)*TWO_PI/COPIES));
            text("8701",-20,-170+70*a);
            break;
        case 5:  //8304
            c = #561FF0;
            fill(c);
           text("8304",300-width/2+(r+45)*sin((-a+3.5)*TWO_PI/COPIES),(r+45)*cos((-a+3.5)*TWO_PI/COPIES));
          text("8304",-20,-170+70*a);
            break;   
        case 6:  //8301
            c = #366AFF;
            fill(c);
              text("8301",300-width/2+(r+50)*sin((-a+3.5)*TWO_PI/COPIES),(r+50)*cos((-a+3.5)*TWO_PI/COPIES));
             text("8301",-20,-170+70*a);
            break;   
        case 7:  //8303
            c = #03B9FF;
            fill(c);
              text("8303",300-width/2+(r+45)*sin((-a+3.6)*TWO_PI/COPIES),(r+45)*cos((-a+3.6)*TWO_PI/COPIES));
            text("8303",-20,-170+70*a);
            break;   
       case 8:  //8601
            c = #00FF30;
            fill(c);
             text("8601",300-width/2+(r+45)*sin((-a+3.9)*TWO_PI/COPIES),(r+45)*cos((-a+3.9)*TWO_PI/COPIES));
           text("8601",-20,-170+70*a);
            break;   
        case 9:  //8202
             c = #F6FF00;
            fill(c);
             text("8202",300-width/2+(r+18)*sin((-a+3.8)*TWO_PI/COPIES),(r+18)*cos((-a+3.8)*TWO_PI/COPIES));
          text("8202",-20,-170+70*a);
            break;  
        case 10:  //8204
            c = #FFEA00;
            fill(c);
             text("8204",300-width/2+(r+18)*sin((-a+3.8)*TWO_PI/COPIES),(r+18)*cos((-a+3.8)*TWO_PI/COPIES));
          text("204",-20,-170+70*a);
            break;
        case 11:  //8206
             c = #FF5F03;
            fill(c);
             text("8206",300-width/2+(r+18)*sin((-a+3.3)*TWO_PI/COPIES),(r+18)*cos((-a+3.3)*TWO_PI/COPIES));
          text("8206",-20,-170+70*a);
            break;
   }


   arc(300-width/2,0,2*r,2*r,(a-1)*TWO_PI/COPIES,a*TWO_PI/COPIES,PIE);
  // noFill();
     int  k = (c >>24) & 0xFF;
     int  r = (c >>16) & 0xFF;
     int  g = (c >>8) & 0xFF;
     int  b = c & 0xFF;
     for(int p=0;p<8;p++){

        fill(r,g,b,k-30*p);
        // rect(-600+p*50,250+50*a,40,40);
        rect(50+70*p,-200+70*a,50,50);

     }
   }

/*
//draw color windows
for(int m=0;m<12;m++){  
   for(int n=0;n<12;n++){
    for(int j=0;j<12;j++){
       //color red
      fill(15+20*j,15+20*n,15+20*12);
      rect(50+70*j,-200+70*n,50,50);
    }
   }
}
  */

  //draw black and white color
  for(int t=0;t<9;t++){
    fill(30*t);
    rect(-580 + 60*t,300,50,50);

  }
   fill(0);
   text("8501",-630,330);

   //draw three rgb circle
   image(img,-520,380,400,250);

  //saveFrame("d:/0.jpg");
}


运行效果显示:



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表