2012-11-12 12 views
9

Bir dizi dikdörtgen çizen uzun onDraw yöntemini uyguladık. Dikdörtgenler çok küçük ve ben daha büyük görünmelerini istiyorum. Ama ne yazık ki bir veritabanı içinde saklandıkları için dikdörtgen koordinatlarını değiştiremiyorum. Yani canvas.scale() kullanarak tuvali yakınlaştırabilir miyim?Canvas.scale işlevini kullanarak bir tuvali yakınlaştırın.

+1

"Ancak maalesef bir veritabanında saklandıkları dikdörtgen koordinatlarını değiştiremiyorum" Neden? DB'den koordinatları alırsınız ve drawRectangle() 'dan önce ihtiyacınız olan ölçek faktörüyle çarpın. – Simon

+0

Bu şekilde bir zoom işlevi uygulayabilir miyim? – Ruby

+1

x = getValueFromDatabase(), y = getValueFromDatabase(), x = x * 5; y = y * 5; DrawRectangle (x, y). Böyle bir şeyin nesi var? Benim amacım, bir veritabanında saklanan değerlerin neden dikdörtgeni daha büyük çiziyorsunuz? Anlamadım. Elbette dikdörtgen koordinatlarını değiştirebilirsiniz. Onlara istediğin her şeyi yapabilirsin. – Simon

cevap

18

Bu cevabı, 0,05 herşeyi çizmeniz ve daha sonra ölçeklendirmeniz ve son olarak uygun şekilde davranması için çevirmeniz gerektiğini söyleyerek başlayacağım.

Basitçe onDraw yönteminde aşağıdakileri yapın:

canvas.save(); 
    canvas.translate(xValue, yValue); 
    canvas.scale(xScale, yScale) 
    /* draw whatever you want scaled at 0,0*/ 
canvas.restore(); 

xScale küçülür veya X yönünde uzanıyor, yScale Y yönünde küçülür veya uzanıyor.

1.0 bunlar için varsayılan değerdir, bu yüzden 2.0 çift tarafından gerilir ve 0,5 oranında küçülür.

Örnek:

canvas.save(); 
    canvas.translate(50, 50); 
    canvas.scale(0.5f, 0.5f); 
    canvas.drawRect(0.0, 0.0, 5.0, 5.0, paint); 
canvas.restore(); 

Bu, uzunluk 5.0 ve 5.0 genişlikte bir dikdörtgen çizin uzunluk ve genişlik için 2.5 aşağı inin, ve sonra, (50, 50) için hareket edecektir. Bunu yapan sanki

sonuç bir dikdörtgen çekilecek:

canvas.drawRect(50.0, 50.0, 52.5, 52.5, paint); 

umarım bu yardımcı olur!

+0

ancak farklı çözünürlük aygıtlarında farklı bir işlev davranışı ölçeklendirin. Piksellerden bahsederken, – zionpi

+0

ölçeği çözünürlükten etkilenmez. –

+0

Burada herhangi bir kimse web için çözüm aramaya gelecektir (ben yaptım =). İşte örnek kod revize edildi: 'context.translate (50, 50); context.scale (0.5, 0.5); context.fillRect (0.0, 0.0, 5.0, 5.0); ' –

İlgili konular