差分情報適用後の実行イメージ

差分情報

パッチファイル (Unified diffs)

--- PtSpuit.java	Mon Jun 01 05:12:13 2009
+++ PtSpuit.java	Fri Jun 12 08:57:11 2009
@@ -5,22 +5,80 @@
 // ----------------------------------------------------------------------------------------------------
 
 // パッケージのインポート
-import java.awt.geom.Point2D;
+import java.awt.Color;
 import java.awt.Graphics2D;
+import java.awt.geom.Point2D;
 import java.awt.image.BufferedImage;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import javax.swing.JPanel;
+import javax.swing.JLabel;
+import javax.swing.BorderFactory;
+import javax.swing.border.BevelBorder;
+import javax.swing.SwingConstants;
 
 // PaintToolを継承する
 public class PtSpuit extends PaintTool {
 
+	// 以降、ボタンやパネルなどのコンポーネント関連の宣言
+
+	private JPanel jPanelLayout = null; // オプション部品のレイアウト用パネル
+
+	private JPanel jPanelPickColor = null; // 取得色表示パネル
+
+	private JLabel jLabel = null; // 取得色16進カラーコード表示ラベル
+
 	// --------------------------------------------------
 	// コンストラクタ
 	// --------------------------------------------------
 	PtSpuit() {
+		// オプション部品のレイアウト用パネルの配置
+		super.jPanel.add(getJPanelLayout());
 	}
 
 	// --------------------------------------------------
 	// Paint()をオーバーライド
 	// --------------------------------------------------
 	public void Paint(Point2D.Double p1, Point2D.Double p2, Graphics2D g2d, BufferedImage img) {
+		// マウスの座標があるキャンバスの色素を取得する
+		Color clr = new Color(img.getRGB((int) p2.x, (int) p2.y));
+
+		// 取得色表示パネルに、取得色を反映する
+		jPanelPickColor.setBackground(clr);
+		// 取得色16進カラーコードラベルに、取得色の16進カラーコードを反映する
+		jLabel.setText("#" + Integer.toHexString(clr.getRed()) + Integer.toHexString(clr.getGreen()) + Integer.toHexString(clr.getBlue()));
+
+		// ペン色の変更
+		super.penColor = clr;
+	}
+
+	// ----------------------------------------------------------------------------------------------------
+	// 以降、ボタンやパネルなどのコンポーネント関連の初期化
+	// ----------------------------------------------------------------------------------------------------
+
+	// オプション部品のレイアウト用パネル
+	private JPanel getJPanelLayout() {
+		if (jPanelLayout == null) {
+			jLabel = new JLabel(); // 取得色16進カラーコード表示ラベル
+			jLabel.setText("未抽出"); // ラベルテキストを初期化する
+			jLabel.setPreferredSize(new Dimension(80, 16)); // サイズ
+			jLabel.setHorizontalAlignment(SwingConstants.CENTER); // 中央揃え
+			jPanelLayout = new JPanel();
+			jPanelLayout.setLayout(new FlowLayout());
+			jPanelLayout.setPreferredSize(new Dimension(100, 120)); // フローレイアウトを使用するため、サイズを調整する
+			jPanelLayout.add(getJPanelPickColor());
+			jPanelLayout.add(jLabel);
+		}
+		return jPanelLayout;
+	}
+
+	// 取得色表示パネル
+	private JPanel getJPanelPickColor() {
+		if (jPanelPickColor == null) {
+			jPanelPickColor = new JPanel();
+			jPanelPickColor.setPreferredSize(new Dimension(80, 80)); // サイズ
+			jPanelPickColor.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED)); // 枠(浮き出しベベル)
+		}
+		return jPanelPickColor;
 	}
 }
\ No newline at end of file
--- ReviewPaintMain.java	Mon Jun 01 05:12:12 2009
+++ ReviewPaintMain.java	Fri Jun 12 08:59:34 2009
@@ -53,6 +53,8 @@
 
 	// ツールパレットの状態変数・状態番号
 
+	private int toolPalletState; // 状態変数
+	
 	private static final int PAINT_TOOL_STATE_PENCIL = 0;
 
 	private static final int PAINT_TOOL_STATE_ERASER = 1;
@@ -261,6 +263,14 @@
 	// --------------------------------------------------
 	private PaintTool changeMainButton(int state) {
 
+		// 前回選択されていたものがスポイトであれば、カラーパレットの選択色を、現在のペン色に変更する
+		if (toolPalletState == PAINT_TOOL_STATE_SPUIT) {
+			colorPanel.setColor(pt_spuit.penColor);
+		}
+
+		// ツールパレットの状態を更新する
+		toolPalletState = state;
+
 		// 一度、全てのボタンを非選択状態にする
 		jButtonPencil.setBorder(nonactiveToolBoder);
 		jButtonEraser.setBorder(nonactiveToolBoder);
@@ -392,7 +402,6 @@
 	private JButton getJButtonSpuit() {
 		if (jButtonSpuit == null) {
 			jButtonSpuit = new JButton();
-			jButtonSpuit.setEnabled(false);
 			jButtonSpuit.setPreferredSize(new Dimension(50, 50));
 			jButtonSpuit.setToolTipText("色の選択");
 			jButtonSpuit.setIcon(new ImageIcon(getClass().getResource("/img/spuit.png")));

変更後のファイル

変更の種類 変更後のファイル 変更前後の比較
修正 /branches/add_spuit/PtSpuit.java Side-by-side diffs
修正 /branches/add_spuit/ReviewPaintMain.java Side-by-side diffs
リンク先は リポジトリ上のURLです