2011-07-25 28 views
21

これはややこしいはずですが、私のアンドロイドアプリでは、一緒に接続された一連の線を描くためにキャンバスを使用しています。何らかの理由で私の行は非常にかすかで薄いです。どのようにして私のラインを太くすることができますか?ここに私のコードは、setColorを()は..私は描くAndroid canvas draw line - 太い線にする

for(int i=1; i<myArrayListOfValues.size(); i++){ 

     Paint myPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
     myPaint.setStrokeWidth(8/*1 /getResources().getDisplayMetrics().density*/); 
     myPaint.setColor(0xffff0000); //color.RED 

     canvas.drawLine(myArrayListOfValues.get(i), myArrayListOfValues.get(i), myArrayListOfValues.get(i-1), myArrayListOfValues.get(i-1), myPaint);  

    } 

もう一つのis..my線や円は常に黒です。..ある任意の効果を持っていると思われることはありません。色名(color.redなど)と16進値(0xffff0000など)を使用してみました。

+0

このクラスからコードをいくつか投稿できますか?onDraw全体ですか?クラスが十分小さければクラスです。それは大丈夫です。ループの中でPaintオブジェクトを作成したのはなぜですか?すべての反復で同じ 'myPaint'を使用するので、ループの外側で一度作成する方がよいでしょう。 – Shaunak

+0

私はこれをループの外に移動しました。これがonDrawメソッド内のすべてのコードです。私はちょうどラインを太くする方法を知りたい。行は表示されていますが、細すぎます – user859348

+0

anti_aliasフラグを削除し、代わりに8.0を使用してみます。 – Shaunak

答えて

18

てみインスタンスの大きな整数に

myPaint.setStrokeWidth(8); 

の値は、:

myPaint.setStrokeWidth(50); 

それは意志線を太くする

も参照してくださいPaint.setStrokeWidth(float)

+0

どのように薄くするには? – AndroidCrazy

+2

それはそれを伸ばしている:P – Shaunak

+1

それは私のために働かなかった。 JavaDocでは、そのように与えられます: 注:行は常に "フレーム化"されているため、スタイルはペイントで無視されます。 –

1

ANTI_ALIAS_FLAGを削除するとどうなりますか?また、Paintコンストラクタをforループの外に移動する必要があります。したがって、繰り返しごとに再作成されることはありません。あなたは 'mypaint'

mypaint.setStyle(Paint.Style.STROKE); 
+0

ペイントインスタンスの作成についての公正なポイント。 ANTI_ALIAS_FLAGは、その行をレンダリングするのを助けることができるのでここにあります。http://stackoverflow.com/questions/5377052/drawline-problem-with-paint-strokewidth-1-in-android – user859348

+1

ANTI_ALIAS_FLAGは、カーブや斜線を描画しようとしている場合は、 – Shaunak

22

変更をdecleare直後にこのラインを含む

+0

acutallyこれは "マークされた右"の答えの代わりに –

+0

これは答えになるはずです! –