2015-03-13 34 views
2

在我的OnDraw方法中,我將路徑繪製到畫布中(帶有區域的圓)。所有的工作都很好,現在我不知道該怎麼做,我該如何傾斜它(圍繞一個軸旋轉)。如何在視圖內的ondraw方法中傾斜畫布

基本上,我試圖實現的東西就像谷歌地圖的傾斜功能。

這裏是pseduo代碼:

protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     // I do all the drawing here 

    canvas.tilt(45degrees) <-----?? 
} 

回答

2

我不認爲你必須在onDraw方法內手動修改畫布來創建傾斜效果。取而代之的是在整個View上使用setRotationX()方法。您也可以在xml中將其定義爲android:rotationX="45"

+0

完美..那就是它。我不知道這是存在的。 – Snake 2015-03-16 04:39:58

+0

SO今天不讓我獎勵賞金,並讓我等待幾個小時。所以我明天會獎勵它 – Snake 2015-03-16 04:40:43

0

使用Canvas.concat(Matrix)用旋轉矩陣,即:

class MyView { 

    private final Matrix rotate = new Matrix(); 

    public MyView() 
    { 
     rotate.setRotate(45.0f); 
    } 

    protected void onDraw(Canvas c) 
    { 
     super.onDraw(canvas); 
     canvas.save(Canvas.MATRIX_SAVE_FLAG); 
     canvas.concat(rotate); 
     canvas.restore(); 
    } 
} 

還請注意,你不應該做內部onDraw()任何內存分配按android的棉短絨。

+0

嗯這很有趣。我會嘗試。我可以在提款結束時(繪圖後)還是開始時執行此代碼?此外,這將繼續添加到以前的旋轉(追加類型的旋轉)或將它做到相同的水平 – Snake 2015-03-13 18:16:00

+0

實際上現在我正在考慮它,這將旋轉圖像。我正在尋找向後傾斜 – Snake 2015-03-13 18:28:50

+0

編輯我的答案保存/恢復畫布狀態。 *向後傾斜*可能需要您預先轉換圖像像素。 – dhke 2015-03-13 18:30:48