2012-07-30 62 views
4

我想部分放大帆布板,因为信纸托盘按钮将被固定,并且主板将变焦,
部分编码如下所述,屏幕完全画在帆布上,可以被视为底部提及..请帮助,并感谢您的关注。画布放大部分

 public class BoardView extends SurfaceView implements SurfaceHolder.Callback 
       { 
     class DrawingThread extends Thread implements OnTouchListener { 

     public DrawingThread(SurfaceHolder holder, Handler handler) { 
        mSurfaceHolder = holder; 

     public void setRunning(boolean b) { 
        mRun = b; 
       } 

       @Override 
       public void run() { 
        while (mRun) { 
         Canvas c = null; 
         try { 
          c = mSurfaceHolder.lockCanvas(null); 

     synchronized (mSurfaceHolder) { 
           // System.gc(); 
           // c.scale(canvasScaleX, canvasScaleY); 
           // c.save(); 
           // c.translate(canvasTranslateX, canvasTranslateY); 
           doDraw(c); 
          } 

          updateGame(); 
         } finally { 
          if (c != null) { 
           mSurfaceHolder.unlockCanvasAndPost(c); 
          } 
         } 
     } 

     private void doDraw(Canvas canvas) { 
        if (ge == null) 
         return; 

         Rect bRect = new Rect(0, 0, dims.getTotalWidth(), 
         dims.getScoreHeight() + dims.getBoardheight()); 
       Drawable drawable = getResources().getDrawable(R.drawable.board); 
       drawable.setBounds(bRect); 

       drawable.draw(canvas); 

       Rect tRect = new Rect(0, dims.getScoreHeight() 
         + dims.getBoardheight(), dims.getTotalWidth(), 
         dims.getTotalHeight()); 
       canvas.drawRect(tRect, fillTrayPaint); 

       int topHeight = dims.getScoreHeight() + dims.getBoardheight(); 
       int bottom = (dims.getTotalHeight() + 5) 
         - (dims.getTotalWidth()/Tray.TRAY_SIZE); 
       Rect rect = new Rect(0, topHeight, dims.getTotalWidth(), bottom - 7); 
       Drawable drawableTray = getResources() 
         .getDrawable(R.drawable.strip); 
       drawableTray.setBounds(rect); 
       drawableTray.draw(canvas); 
         drawTray(canvas); 
       drawBoard(canvas); 

       // drawScore(canvas); 
       drawMovingTile(canvas); 
      } 


public BoardView(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     SurfaceHolder holder = getHolder(); 
     holder.addCallback(this); 

     // endTurn=(ImageButton)findViewById(R.id.endturn_button_horizontal); 
     thread = new DrawingThread(holder, handler); 
    } 
@Override 
    public void surfaceChanged(SurfaceHolder holder, int format, int width, 
      int height) { 
    } 

    @Override 
    public void surfaceCreated(SurfaceHolder holder) { 
     final float scale1 = getResources().getDisplayMetrics().density; 
     defaultFontSize = (int) (MIN_FONT_DIPS * scale1 + 0.5f); 
     thread.setDefaultFontSize(defaultFontSize); 
     dimensions = calculateDimensions(getWidth(), getHeight()); 
     thread.setDimensions(dimensions); 

     thread.setRunning(true); 

     // if (thread != null && !thread.isAlive()) 
     thread.start(); 
    } 

    @Override 
    public void surfaceDestroyed(SurfaceHolder holder) { 
     boolean retry = true; 
     thread.setRunning(false); 
     while (retry) { 
      try { 
       thread.join(); 
       retry = false; 
      } catch (InterruptedException e) { 

      } 
     } 
    } 

The screen is fully draw in canvas which is mention as below :-

+1

我已经成功实现了它... ... hurrey ....我们可以简单地通过canvas.clipRect(矩形)来实现,在这一点上我们应该做的是保存画布canvas.save()和画布之后.clipRect(矩形)调用canvas.restore()。 – 2012-11-12 10:58:59

回答

2

我们可以通过canvas.clipRect(矩形)简单地做到这一点,我们应该做的就是保存canvas.save()和canvas.clipRect(rectangle)之后调用canvas.restore()。

0

我想你需要使你的游戏板到屏幕外的位图,然后在使用Matrix帆布得出这样的位图,这样你就可以改变它的位置和规模。

+0

我不认为这是正确的方式,因为顺便说一句。托盘的信件拖放也应相应扩大.. – 2012-07-31 04:50:32

1

考虑尝试这样的:

  • 创建若想放大到画布上的位图。
  • 将该位图渲染到屏幕时,您可以更改scr rect (它将“缩放”到位图中)。

我希望这有助于。

+0

你可以提供一些示例代码放大和缩小画布在画布 – micky 2014-08-18 11:01:23

0

我相信最简单的方法是使用Canvas#scale(float scale, int pivotx, int pivoty)方法。它基本上是以整体画布的方​​式生长,这实际上是从2D视角进行缩放的。

canvas.scale(2.0f, getWidth()/2, getHeight()/2)将从中心缩放图像2。 canvas.scale(1.0f, getWidth()/2, getHeight()/2)将缩回。

我从来没有在这方面尝试过,所以如果你决定尝试它,请报告结果请!我想知道以供将来参考。

+0

行..让我试试,我会让你知道.. – 2012-08-10 06:50:55

+0

好吧,它是关于画布的全部缩小..部分缩小,可能..是什么? – 2012-08-11 05:57:41

+0

你是什么意思部分缩放?缩放画布的一部分? – Gautam 2012-08-13 04:23:19