0

コードは配列を介して実行されます。文字「X」が配列にある場合、画面上のそれぞれの場所に drawRect が表示されます。

問題は、色が実際に画面に描画されていないことです。いくつかの Android Web サイトでは、キャンバスやビットマップなどがどのように必要かについて話しました。

私の質問: drawRect メソッドから実際に画面に表示される色を取得するには、どうすればよいですか?

package com.example.routedrawingtest;

import android.app.Activity;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Point;
import android.os.Bundle;
import android.view.Display;
import android.graphics.Paint;
import android.view.View;

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    float scale_x;
    float scale_y;

    public void main(String[] args){
        @SuppressWarnings("unused")
        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();

        int screen_width = size.x;
        int screen_height = size.y;
        scale_x = screen_width/125;
        scale_y = screen_height/100;

    }

    public void onDraw(Canvas canvas) { 

        int i;
        Paint paint = new Paint();
        paint.setColor(Color.RED);
     paint.setStrokeWidth(10);
        int j;

        for (i=0; i<125; i++)
            for (j=0; j<100; j++)
                if (charMap[i][j]=='X')

                canvas.drawRect(i*scale_x, j*scale_y, scale_x,scale_y, paint);
    }

}
4

1 に答える 1

0

このメソッドは、必要なことを行うためにonDrawによって呼び出されるわけではありません。クラス View を拡張し、そこにメソッドを実装する必要があります。Activityビューを親に追加するときに詳細を知るまでは、明示的なサイズを指定する必要がfill_parentあります。そうしないと、画面に表示されません。例えば:

    public class Drawer extends View
    {
        Paint paint =  new Paint();

         public Drawer()
         {
             paint.setStyle(Style.STROKE);
             paint.setStrokeColor(Color.BlUE);
             // etc...

         }

    public void onDraw(Canvas canvas)
    {
      for (i=0; i<125; i++)
        for (j=0; j<100; j++)
            if (charMap[i][j]=='X')

            canvas.drawRect(i*scale_x, j*scale_y, scale_x,scale_y, paint);
    } 

    }

XML を介して、または完全修飾名を使用するようなコードを介して、ビューをコードに追加します。

XML:

     <com.example.comp.Drawer
      android:layout_width="fill_parent"<<<< specify a size
       etc...
     />
于 2013-07-16T05:07:58.210 に答える