Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用可从资源中绘制的位图初始化位图变量不起作用-使用ANDROID_Java_Android_Bitmap_Android Canvas_Android Resources - Fatal编程技术网

Java 使用可从资源中绘制的位图初始化位图变量不起作用-使用ANDROID

Java 使用可从资源中绘制的位图初始化位图变量不起作用-使用ANDROID,java,android,bitmap,android-canvas,android-resources,Java,Android,Bitmap,Android Canvas,Android Resources,我使用以下代码初始化位图变量: Bitmap bitmap = ((BitmapDrawable)this.model.gameView.context.getResources().getDrawable(R.drawable.pic1)).getBitmap(); 当我尝试记录位图的宽度时,日志甚至不会为该调用输出任何内容 我知道它已经到了那一行,因为我跟踪了代码 另外,当我尝试为位图绘制canvas.draw时,屏幕上不会绘制任何内容 我用矩形画的一切都很好 我的图片资源是PNG 感谢您

我使用以下代码初始化位图变量:

Bitmap bitmap = ((BitmapDrawable)this.model.gameView.context.getResources().getDrawable(R.drawable.pic1)).getBitmap();
当我尝试记录位图的宽度时,日志甚至不会为该调用输出任何内容

我知道它已经到了那一行,因为我跟踪了代码

另外,当我尝试为位图绘制canvas.draw时,屏幕上不会绘制任何内容

我用矩形画的一切都很好

我的图片资源是PNG


感谢您的帮助

尝试使用BitmapFactory.decodeResource 看一下本主题中的答案:

尝试使用BitmapFactory.decodeResource 看一下本主题中的答案:

为位图类尝试类似的方法

public class DrawBitmap extends View
{
    Bitmap bitmap;

    public DrawBitmap(Context content)
    {
        super(content);

        bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pic1);
    }

    @Override
    protected void onDraw(Canvas canvas)
    {
        super.onDraw(canvas);
        canvas.drawColor(Color.BLACK);//whatever color you want, make sure it's not the same as your image
        canvas.drawBitmap(bitmap, (canvas.getWidth()), 0, null);
    }
}
主类

public class Main extends Activity 
{

    DrawBitmap myView;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        myView = new DrawBitmap(this);
        setContentView(myView);
    }
}

为位图类尝试类似的操作

public class DrawBitmap extends View
{
    Bitmap bitmap;

    public DrawBitmap(Context content)
    {
        super(content);

        bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pic1);
    }

    @Override
    protected void onDraw(Canvas canvas)
    {
        super.onDraw(canvas);
        canvas.drawColor(Color.BLACK);//whatever color you want, make sure it's not the same as your image
        canvas.drawBitmap(bitmap, (canvas.getWidth()), 0, null);
    }
}
主类

public class Main extends Activity 
{

    DrawBitmap myView;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        myView = new DrawBitmap(this);
        setContentView(myView);
    }
}

我刚想出来。这与我使用的位图加载方法无关。
这是我的一个逻辑错误。我的代码意外地遇到了位图为空的情况,它试图在画布上绘制空资源。

刚刚解决了这个问题。这与我使用的位图加载方法无关。
这是我的一个逻辑错误。我的代码意外地出现了位图为空的情况,它试图在画布上绘制空资源。

是的,我一开始尝试过,然后又尝试了一次,它的行为与此相同。您是否也尝试过处理该代码上的异常?可能您的png图像在资源文件夹中的位置不正确。我建议检查它是否抛出了Resource Not Found异常。是的,我刚开始尝试了这个,然后又做了一次,它的行为是相同的。您是否也尝试过处理该代码上的异常?可能您的png图像在资源文件夹中的位置不正确。我建议检查它是否抛出资源未找到异常。