如何实现http://www.sz-qb.com/ttmmpp/colorpicker.jpg右边的功能(左边的方式已搞定,我想再加上右边的功能)?右边(现在是WEB网页的方式截图)上面为常用的WEB方式安全色,中部的RGB三角形可拖动,下部颜色区域内可以选择相关颜色。任意颜色区域双击为确定选取。我需要在C#的WINFORM中应用。

解决方案 »

  1.   

    就差一点了:
    Graphics g=this.CreateGraphics();
    int startX=20;//起始点X坐标
    int startY=20;//起始点Y坐标
    int SPACE=2;//每色块间隔
    int width=30;//色块宽度
    int height=24;//色块高度string[] clr={"FF","CC","99","66","33","00"};int numX=0;
    int numY=0;
    for(int k=0;k<6;k++)
    {
    for(int j=0;j<3;)
    {
    for(int m=0;m<6;m++)
    {
    for(int i=0;i<6;i++)
    {
    Color newColor=ColorTranslator.FromHtml("#"+clr[k]+clr[j+m]+clr[i]);
    g.FillRectangle(
    new SolidBrush(newColor),
    startX+numX*(width+SPACE),
    startY+numY*(height+SPACE),
    width,height
    ); if(m%2==1)
    {
    numX++;
    }
    else
    {
    numX=i;
    }
    } if(m%2==0)
    {
    numY++;
    }
    }
    j+=3;
    }
    }
    g.Dispose();哪位大侠帮忙看一下?
      

  2.   

    使用我做的ColorPicker控件,一样的效果。
    下载:www.aspxcontrol.com
      

  3.   

    waki(不老先生) :
    你这个是WEBFORM下面的吧,我也有类似的,感觉比你那个还好点(类似于上面图形所示右边那个,不过没有做成控件)。但我要的是WINFORM下的。
      

  4.   

    win下,根据你那段代码改的,我只能把那些色块画出来,其他的就不会了
    Graphics g=this.CreateGraphics();
    int startX=20;//起始点X坐标
    int startY=20;//起始点Y坐标
    int SPACE=2;//每色块间隔
    int width=30;//色块宽度
    int height=24;//色块高度 string[] clr={"FF","CC","99","66","33","00"}; int numX=0;
    int numY=0; for(int i=0;i<6;i++)
    {
    for(int j=0;j<6;j++)
    {
    for(int k=0;k<6;k++)
    {
    Color newColor=ColorTranslator.FromHtml("#"+clr[i]+clr[j]+clr[k]);
    g.FillRectangle(
    new SolidBrush(newColor),
    startX+(numX%12)*(width+SPACE),
    startY+numY*(height+SPACE),
    width,height
    );
    numX++;
    }
    if(numX%12==0)
    numY++;

    }
    }
    g.Dispose();
      

  5.   

    谢谢zpisgod(GOD) ,我也做好了。这段时间一直没有看你的贴子。
    这是我的:
    string[] clr={"FF","CC","99","66","33","00"}; int numX=0;
    int numY=0;
    for(int k=0;k<6;k++)
    {
    for(int j=0;j<3;)
    {
    for(int m=0;m<6;m++)
    {
    for(int i=0;i<6;i++)
    {
    Color newColor=ColorTranslator.FromHtml("#"+clr[k]+clr[j+m]+clr[i]);
    g.FillRectangle(
    new SolidBrush(newColor),
    startX+numX*(perColorW+SPACE),
    startY+numY*(perColorH+SPACE),
    perColorW,perColorH
    );

    g.DrawRectangle(
    new Pen(Color.Black),
    startX+numX*(perColorW+SPACE),
    startY+numY*(perColorH+SPACE),
    perColorW,perColorH
    );
    /*
    g.DrawString("#"+clr[k]+"\n"+clr[j+m]+clr[i],this.Font,new SolidBrush(Color.Black),
    (float)(startX+numX*(width+SPACE)),(float)(startY+numY*(height+SPACE)),
    new StringFormat());
    */
    if((numX+1)%6==0 && (numX+1)%12==0)
    {
    numY += 1;
    numX =(numX+1)%12;
    }
    else
    {
    numX += 1;
    }
    }
    }
    j+=3;
    }