| 编写代码的同志们一般懂美术的就少了,偶也是,什么色轮、三维加色等等。虽然看过一些书籍(如内田广由纪的《配色基础原理》),不过还是一知半解的。 下面这些专业配色工具一直也不怎么会用。
 
   
   
  所以,本着程序为生活服务的原则,我用java和c#分别编写了一个混色器。想看看不同比率的颜色混合起来得到的是什么效果么?代码如下,与君分享:
 1、Java Applet:
 package edu.sx.william;
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Container;
 import java.awt.GridLayout;
 import java.awt.Panel;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseMotionListener;
 import javax.swing.JApplet;
 import javax.swing.JLabel;
 import javax.swing.JScrollBar;
 public class SetBakColor extends JApplet implements MouseMotionListener {
 private static final long serialVersionUID = 1L;
 JScrollBar jsb, jsb2, jsb3;
 JLabel jl;
 Container con;
 public void init() {
 Panel pan = new Panel();
 pan.setLayout(new GridLayout(2, 3));
 con = getContentPane();
 con.setLayout(new BorderLayout());
 jsb = new JScrollBar(JScrollBar.HORIZONTAL, 0, 1, 0, 255);
 jsb2 = new JScrollBar(JScrollBar.HORIZONTAL, 0, 1, 0, 255);
 jsb3 = new JScrollBar(JScrollBar.HORIZONTAL, 0, 1, 0, 255);
 jsb.addMouseMotionListener(this);
 jsb2.addMouseMotionListener(this);
 jsb3.addMouseMotionListener(this);
 jl = new JLabel("the RGB color");
 jl.addMouseMotionListener(this);
 pan.add(jsb);
 pan.add(jsb2);
 pan.add(jsb3);
 pan.add(jl);
 con.add(pan,BorderLayout.NORTH);
 }
 @Override
 public void mouseDragged(MouseEvent e) {
 jl.setText("R:" + jsb.getValue() + "   G:" + jsb2.getValue() + "   B:"
 + jsb3.getValue());
 con.setBackground(new Color(jsb.getValue(), jsb2.getValue(), jsb3
 .getValue()));
 }
 @Override
 public void mouseMoved(MouseEvent e) {
 }
 }
 运行效果:
 
   2、C# WinForm
 (Winform只列出了功能实现代码,用到的控件为GroupBox、Label、HScrollBar)
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
 using System.Drawing;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
 namespace WfAdo
 {
 public partial class SetBakColor : Form
 {
 public SetBakColor()
 {
 InitializeComponent();
 }
 int r = 0, g = 0, b = 0;
 private void hScrollBar3_Scroll(object sender, ScrollEventArgs e)
 {
 label3.Text = hScrollBar3.Value.ToString();
 r = int.Parse(label3.Text);
 this.BackColor = Color.FromArgb(r, g, b);
 }
 private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
 {
 label1.Text = hScrollBar1.Value.ToString();
 g = hScrollBar1.Value;//两种获得颜色的方法!
 this.BackColor = Color.FromArgb(r, g, b);
 }
 private void hScrollBar2_Scroll(object sender, ScrollEventArgs e)
 {
 label2.Text = hScrollBar2.Value.ToString();
 b = int.Parse(label2.Text);
 this.BackColor = Color.FromArgb(r, g, b);
 }
 }
 }//好像C#敲的代码更少些:-)
 运行效果:
 
  
 作者:编程的孩子
 
 |