2012-01-29 121 views
4

让我首先介绍一下我大部分都是编写Java的新手,所以我很乐意提供完整的解释。不只是一个代码渗出,但东西,让一些网站为什么和它应该是Android:在特定位置绘制位图,拒绝绘制

我目前试图编写一个应用程序,我怎么过我有一些麻烦与画布和绘制我想要的位图。这是我的代码来绘制图像:

Canvas canvas = null; 
Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.image); 
canvas.drawBitmap(image, 10, 800, null); 

此方法(期望)会抛出一个空指针异常。但是,将“canvas”定义为null是Eclipse给我的唯一选项。当试图将其定义为

Canvas canvas = new Canvas(); 

Android简单地拒绝绘制位图。我敢肯定,我的形象位于RES /绘制/图像 如果有帮助,将图像保存为“image.png”

我怎么会做在特定位置的Android显示器/显示我的图像/位图我要求它画图像(10x800)?

回答

4

编写解决编译器错误的废话不会改变它是无稽之谈! :)

您必须以另一种方式获取对Canvas对象的引用。您可能想要更具体地了解您正在尝试做什么,以便我们可以建议您应该如何去做。 (出你尝试只是一些其他视图一起显示的图像你想创建一个自定义视图您可能只是想考虑使用ImageView的?)

编辑:

你应该读了关于developer.android.com上的Android架构。如果您只是试图显示图像,则可能没有理由直接使用画布。然而,你可以通过扩展视图类

class myView extends View{ 

    Bitmap bm; 

    loadBitmap() 
    { 
     bm = BitmapFactory.decodeResource(getResources(), R.drawable.image); 
    } 

    @Override 
    public void draw(Canvas c) 
    { 
     c.drawBitmap(bm, XCORD, YCORD, null); 
    } 
} 

自定义视图中绘制如果您不需要自定义视图,只需使用的ImageView类

class MyActivty extends Activity{ 
    @Override 
    public void onCreate(Bundle b) 
    { 
     super.onCreate(b); 
     ImageView iv = new ImageView(this); 
     iv.setImageResource(R.drawable.pic); 
     setContentView(iv); 
    } 
} 

警告:我写的那些方法调用离开我的头顶,他们可能会稍微偏离。

+0

我只是试图让Android来绘制一个位图,在当前的视图中,在10X800的线...代码做这只是赞赏,或者只是给我什么帆布必须被初始化,以防止NUllPointer,同时允许Android绘制和显示位图 – DeadChex 2012-01-29 15:31:25

+0

第一个soloutiton,在我的项目和一个新项目都导致Eclipse错误,“隐式超级构造函数View()未定义为默认构造函数。必须定义一个显式构造函数”on“ class CustomView扩展了View {'具体来说就是它的“CustomView”部分...添加'public CustomView(上下文上下文){super(context); \t \t \t \t // TODO自动生成构造函数存根 \t \t \t}”作为sugessted通过Eclipse的,解决这个问题,Android的怎么过不显示图像(是的,我叫c.drawBitmap)请帮帮忙,我会尽力第二个解决方案很快,并发回 – DeadChex 2012-01-29 22:16:10

+0

对不起,但从我可以告诉它,你似乎没有阅读Android的文档。(更不用说,您甚至可以在尝试编写Android应用程序之前,通常需要学习更多关于编程的知识)。阅读简介并按照developer.android.com上的所有教程进行操作。 – you786 2012-01-29 22:28:56