2011-07-08 36 views
5

我做了一個簡單的繪圖應用程序,可以在畫布上繪製線條。現在我想添加各種顏色選擇按鈕。現在我遇到的問題是,如果我點擊一個顏色按鈕並繼續繪製所有先前繪製的線條,也會將其顏色更改爲新選擇的顏色。用多種顏色在畫布上繪畫

我發現了一些關於使用油漆(或路徑)列表的論壇帖子。但是,我不能完全理解解決方案。任何人都可以發佈一個工作示例的代碼?

非常感謝您提前。

+0

您可以創建Paint對象的ArrayList,並可以通過在每次Button單擊時初始化新的Paint對象來設置線的顏色。 –

回答

1

試試這個, 我做了它,它爲我的作品馬麗娟。

public void onClick(View view){ 

     switch (view.getId()){ 
      case R.id.colorRedBtn: 

       //Toast.makeText(getApplicationContext(), "Red", Toast.LENGTH_SHORT).show(); 
       currentPaint = new Paint(); 
       currentPaint.setColor(0xFFFF0000); 
       currentPaint.setDither(true); 
       currentPaint.setStyle(Paint.Style.STROKE); 
       currentPaint.setStrokeJoin(Paint.Join.ROUND); 
       currentPaint.setStrokeCap(Paint.Cap.ROUND); 
       currentPaint.setStrokeWidth(3); 
       break; 
      case R.id.colorBlueBtn: 

       //Toast.makeText(getApplicationContext(), "Green", Toast.LENGTH_SHORT).show(); 
        currentPaint = new Paint(); 
       currentPaint.setColor(0xFF00FF00); 
       currentPaint.setDither(true); 
       currentPaint.setStyle(Paint.Style.STROKE); 
       currentPaint.setStrokeJoin(Paint.Join.ROUND); 
       currentPaint.setStrokeCap(Paint.Cap.ROUND); 
       currentPaint.setStrokeWidth(3); 
       break; 
      case R.id.colorGreenBtn: 

       //Toast.makeText(getApplicationContext(), "Blue", Toast.LENGTH_SHORT).show(); 
       currentPaint = new Paint(); 
       currentPaint.setColor(0xFF0000FF); 
       currentPaint.setDither(true); 
       currentPaint.setStyle(Paint.Style.STROKE); 
       currentPaint.setStrokeJoin(Paint.Join.ROUND); 
       currentPaint.setStrokeCap(Paint.Cap.ROUND); 
       currentPaint.setStrokeWidth(3); 

       break; 

      case R.id.colorBlackBtn: 

       //Toast.makeText(getApplicationContext(), "Black", Toast.LENGTH_SHORT).show(); 
       currentPaint = new Paint(); 
       currentPaint.setColor(0xFF000000); 
       currentPaint.setDither(true); 
       currentPaint.setStyle(Paint.Style.STROKE); 
       currentPaint.setStrokeJoin(Paint.Join.ROUND); 
       currentPaint.setStrokeCap(Paint.Cap.ROUND); 
       currentPaint.setStrokeWidth(3); 
       break; 
      } 
} 

希望這會幫助你。 享受。

6
  1. Canvas
  2. Paint

    Paint bluePaint = new Paint(); 
    p1.setColor(Color.BLUE); 
    
    Paint greenPaint = new Paint(); 
    p2.setColor(Color.GREEN); 
    
    canvas.drawLine(1.0, 1.0, 2.0, 2.0, bluePaint); //blue line 
    canvas.drawLine(2.0, 1.0, 1.0, 2.0, greenPaint); //green line