2011-11-21 6 views
2

私は初心者です。私は問題がある。 これは、ビュー上のキャンバスの例です。ビューにキャンバスを描画しますが、何も塗られていません。

円とその上のテキストが表示されるはずです。

http://goo.gl/6ZPvQ)私の評判は、写真を撮るには不十分です。

しかし、何も起こらなかった。

これは私がキャンバスを描くビューです。

public class TestCanvasActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(new MyGraphics(this)); 
    } 
} 

class MyGraphics extends View { 
    private Paint cPaint,tPaint; 
    private Path circle; 
    private String text; 

    @Override 
    protected void onDraw(Canvas canvas) { 
     // TODO Auto-generated method stub 
     super.onDraw(canvas); 
     cPaint = new Paint(Color.GRAY); 
     tPaint = new Paint(Color.BLACK); 
     circle = new Path(); 
     text = "Welcome to Android!!"; 

     circle.addCircle(150, 150, 100, Direction.CW); 
     canvas.drawPath(circle, cPaint); 
     canvas.drawTextOnPath(text, circle, 0, 20, tPaint); 
    } 

    public MyGraphics(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 
     setBackgroundColor(R.drawable.background); 
    } 

} 

これは背景画像コードです。

background.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<gradient 
android:startColor="#FFFFFF" 
android:endColor="#808080" 
android:angle="270" /> 
</shape> 

ありがとうございました!!

I低レベルの間違いをしました。 cPaint = new Paint(Color.GRAY)を次の2行に変更します。できます!!

cPaint = new Paint(); 
cPaint.setColor(Color.WHITE); 

ありがとうございました。

+0

...以下の通りですビューを更新します。 – Jakar

+0

あなたは正しいです!しかし、クラスViewからMyGraphicsを継承します。ビットマップ自体にキャンバスを描きます!! – Sam

+0

よろしいですか?私はそれで少し経験があるので、私は確信していませんでした。 – Jakar

答えて

0

"Hello Android 3rd"の例を見ました。 cPaint = new Paint(Color.GRAY);が間違っていることがわかりました。私はそれをcPaint = new Paint(); cPaint.setColor(Color.WHITE);に変更しました。

0

1.は、行の後canvas.drawTextOnPath(text, circle, 0, 20, tPaint);

2.invalidate();を入れコンストラクタで背景を設定し、それを描くかどうかを確認しないようにしてください。

+0

それでも動作しませんでした。私はこの例を "Hello Android 3rd"で見ました。 – Sam

+1

それでも動作しませんでした。私はこの例を "Hello Android 3rd"でもう一度見ました。 ** cPaint = new Paint(Color.GRAY); **が間違っています。次に、** cPaint = new Paint(); cPaint.setColor(Color.WHITE); **に変更します。あなたにも同じことをありがとう! – Sam

0

これは、塗料に値を渡しただけなのでConstrutor * cPaint = new Paint(VALUES)*はnullを返します!キャンバスの関数でnullをペイントオブジェクトとして渡すと、デフォルトの色(BLACK)になります。実際に `;ペイントオブジェクトを初期化する正しい方法は、あなたが描くたびに、それはビットマップ(私は信じている)の上に描画する必要があり、その後、あなたはlayout.setImageBitmap(ビットマップ)`呼び出します

cPaint = new Paint(); 
    cPaint.setColor(Color.GRAY); 
    tPaint = new Paint(); 
    tPaint.setColor(Color.BLACK); 
関連する問題