2012-08-07 25 views
7

üzerine çizilmiş bir bitmap bulunan bir tuval ölçeklemek istiyorum. Tuvali ölçeklendirebiliyorum, ancak üzerine çizilen bitmap, sol altta sırasıyla sağ altta hareket ediyor. Ben çevirisini manipüle birçok farklı yaklaşımlar çalıştı Birkaç günden beriÖlçekleme tuval ve tutma merkezi

@Override 
protected void onDraw(Canvas canvas) { 
    canvas.translate(mPosX, mPosY); 
    canvas.scale(mScaleFactor, mScaleFactor); 

    //draw bitmap 
} 

ölçekleme için puan dönmesine koordine eder. Ama benim için hiçbir şey işe yaramadı. Eminim ki benim problemim için kolay bir çözüm olmalı.

canvas.scale(2,2, redCircle.x, redCircle.y); 

çalışacaktır: Bahsettiğiniz gibi önceden

+0

tam olarak nasıl bitmap ölçekli istiyorsun? Bu ne anlama gelir: "fakat üzerine çizilen bitmap, sırasıyla sol üstte aşağı doğru hareket eder." – you786

+0

Ben ekranın ortasında kırmızı renkli bir daire düşünelim. Yakınlaştırırsam ekranın ortasında daha büyük bir kırmızı daire olmasını istiyorum. Şu anda kırmızı daire sadece bir örnekti ekranın –

cevap

13

yılında

sayesinde pivot noktası Bunu yapmak için doğru bir yoldur. Fazladan çeviri yapmaya gerek yoktur.

+0

sağ alt köşesinde bir büyük kırmızı bir yuvarlak görürsünüz. Aslında tuval üzerine çizilmiş birçok farklı bitmap vardır. Ekranın merkezinde bulunanları yakınlaştırmak istiyorum. –

+0

Ardından pivot noktanız ekranınızın ortası olmalıdır. Bunu daha önce denediyseniz, centerX ve centerY için yanlış değerler kullanıyor olmalısınız. – you786

+0

Tamam. Şimdi ekranın merkezine yakınlaştırabilirim. Ama şimdi tuval üzerine kaydırma gerçekten 'yavaş canvas.scale olan (mScaleFactor, mScaleFactor, GetWidth()/2, GetHeight()/2); \t \t \t canvas.translate (mPosX, mPosY); ' –