0

代码将通过一个数组运行。如果在数组中看到字符“X”,它将在屏幕上的相应位置绘制矩形。

问题是实际上并没有在屏幕上绘制颜色。一些 android 网站谈到了如何需要画布、位图等。

我的问题:我需要做什么才能让 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不被调用Activity来做你想做的事,你需要扩展类 View 并在那里实现该方法。在您将视图添加到父视图时了解更多信息之前,您必须为其指定明确的大小,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 回答