2012-07-30 107 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