2012-03-09 32 views
0

嗨,我使用SurfaceView借鑑canvas.When我不能surfaceview畫在用這樣的的onDraw

canvas.drawCircle(100, 100, 5, paint); //it is drawing fine 

,而我使用這樣的:

canvas.drawCircle(x, y, 5, paint); //it's not drawing.x,y being some points on screen and they are floats. 

任何幫助

+0

發佈一些更多的代碼,它很可能是X和Y沒有被正確初始化。另外,在'drawCircle()'調用之前嘗試設置x = 100和y = 100。 – Jave 2012-03-09 10:41:03

+0

是的,我正在繪製到circles.one使用100,100和一個使用x,y.And還打印x,y值,它們是非零浮點值。 – 2012-03-09 10:42:59

回答

0

檢查您的x和y座標是否爲正值,並且位於您的視圖範圍內:

x >= 0 && x < canvas.getWidth() && y >= 0 && y < canvas.getHeight() 
+0

我100%sure.put這評論。這不是我的答案。 ( – 2012-03-09 10:33:21

0
  @Override 
     protected void onDraw(Canvas canvas) { 
      super.onDraw(canvas); 
      canvas.restoreToCount(1); 
      canvas.clipRect(new Rect(0, 0, getWidth(), getHeight())); 
      canvas.drawCircle(x, y, 10, paint); 
      canvas.save();  
     } 
     float x,y; 
     @Override 
     public boolean onTouchEvent(MotionEvent event) { 
      x=event.getX(); 
      y=event.getY(); 
      invalidate(); 
      return true; 
     } 
+0

不工作.. :( – 2012-03-09 10:39:58

+0

它的工作對我很好..如果它仍然不適合你,請檢查你的x和y更新與否,否則你正在繪製一些其他層(位圖),這是覆蓋你的圈子.. – Sandy09 2012-03-09 12:31:09

+0

我的x和y是肯定的,並且沒有圖層 – 2012-03-09 12:32:32

0

某些類型的視圖默認情況下不會自行重繪。如果你想要它做這樣做,實現在你看來SurfaceHolder.Callback和補充一點:

@Override 
public void surfaceCreated(SurfaceHolder holder) { 
    setWillNotDraw(false); 
}