Boyutu, ölçeği ve yönlendirmeyi ayarlama

Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü

Sayfa yazdırma bölümünde, temel yazdırma işinin adımları ayrıntılı şekilde ele alınmaktadır ve burada çıktı sözcüğü, belirtilen hareketli grafiğin ekran boyutunun ve konumunun yazdırılmış eşdeğerini yansıtır. Ne var ki yazıcılar yazdırma için farklı çözünürlükler kullanır ve yazdırılan hareketli grafiğin görünümünü olumsuz yönde etkileyen ayarlara sahip olabilir.

Flash çalışma zamanları bir işletim sisteminin yazdırma ayarlarını okuyabilir ancak bu özelliklerin salt okunur olduğunu ve özelliklerin değerlerini yanıtlayabilseniz de ayarlayamadığınızı unutmayın. Bu nedenle de, örneğin, yazıcının sayfa boyutu ayarlarını öğrenip içeriğinizi bu boyuta sığacak şekilde ayarlayabilirsiniz. Ayrıca yazıcının kenar boşluğu ayarlarını ve sayfa yönlendirmesini de belirleyebilirsiniz. Yazıcı ayarlarını yanıtlamak için, bir yazdırma alanı belirtin, ekran çözünürlüğü ile yazıcının nokta ölçüleri arasındaki farkı ayarlayın veya kullanıcının yazıcısının boyut ve yönlendirme ayarlarına uyacak şekilde içeriğinizi dönüştürün.

Yazdırma alanı için dikdörtgenler kullanma

PrintJob.addPage() yöntemi, hareketli grafiğin yazdırılmasını istediğini bölgesini belirtmenize olanak sağlar. İkinci parametre olan printArea, bir Rectangle nesnesi şeklindedir. Bu parametre için bir değer sağlamaya yönelik üç seçeneğiniz vardır:

  • Aşağıdaki örnekte olduğu gibi, belirli özelliklere sahip bir Rectangle nesnesi oluşturun ve sonra addPage() çağrısında bu dikdörtgeni kullanın:

    private var rect1:Rectangle = new Rectangle(0, 0, 400, 200); 
    myPrintJob.addPage(sheet, rect1);
  • Önceden bir Rectangle nesnesi belirtmediyseniz, aşağıdaki örnekte olduğu gibi, bunu çağrının içinde yapabilirsiniz:

    myPrintJob.addPage(sheet, new Rectangle(0, 0, 100, 100));
  • addPage() çağrısında üçüncü parametre için değer sağlamayı planlıyorsanız ancak bir dikdörtgen belirtmek istemiyorsanız, aşağıdaki gibi, ikinci parametre için null değerini kullanabilirsiniz;

    myPrintJob.addPage(sheet, null, options);

Nokta ve pikselleri karşılaştırma

Bir dikdörtgenin genişliği ve yüksekliği piksel değerlerindedir. Bir yazıcı, yazdırma ölçüm birimi olarak puntoları kullanır. Puntolar sabit bir fiziksel boyuttadır (1/72 inç) ancak ekrandaki pikselin boyutu o ekranın çözünürlüğüne bağlıdır. Pikseller ile puntolar arasındaki dönüştürme oranı, yazıcı ayarlarına ve hareketli grafiğin ölçeklenmiş olup olmamasına bağlıdır. 72 piksel genişliğindeki ölçeklenmemiş bir hareketli grafik, ekran çözünürlüğünden bağımsız olarak, bir nokta bir piksele eşit olacak şekilde bir inç genişliğinde yazdırılır.

İnç ve santimetre birimlerini twip'lere veya puntolara (bir twip, bir puntonun 1/20'sidir) dönüştürmek için aşağıdaki eşitlikleri kullanabilirsiniz:

  • 1 punto = 1/72 inç = 20 twip

  • 1 inç = 72 punto = 1440 twip

  • 1 santimetre = 567 twip

printArea parametresini çıkarırsanız veya bu parametre yanlış şekilde iletilirse, hareketli grafiğin tüm alanı yazdırılır.

Ölçekleme

Bir Sprite nesnesini yazdırmadan önce ölçeklemek istiyorsanız, PrintJob.addPage() yöntemini çağırmadan önce ölçek özelliklerini ayarlayın (bkz. Boyut ve ölçekleme nesnelerini işleme) ve yazdırma işleminden sonra bunları geri orijinal değerlerine ayarlayın. Sprite nesnesinin ölçeği ile printArea özelliği arasında herhangi bir ilişki yoktur. Başka bir deyişle, 50 piksel x 50 piksel olan bir yazdırma alanı belirtirseniz, 2500 piksel yazdırılır. Sprite nesnesini ölçeklerseniz, aynı 2500 piksellik alan yazdırılır, ancak Sprite nesnesi ölçeklenen boyutta yazdırılır.

Bir örnek için, bkz. Yazdırma örneği: Ölçekleme, kırpma ve yanıtlama.

Yatay ve dikey yönlendirme için yazdırma

Flash Player ve AIR uygulaması yönlendirme ayarlarını algılayabildiğinden, aşağıdaki örnekte gösterildiği gibi, yazıcı ayarlarına yanıt olarak içerik boyutunu veya dönüşü ayarlamak için ActionScript uygulamanızda mantık oluşturabilirsiniz:

if (myPrintJob.orientation == PrintJobOrientation.LANDSCAPE) 
{ 
    mySprite.rotation = 90; 
}
Not: Kağıtta içerik yönlendirmesine yönelik sistem ayarını okumayı planlıyorsanız, PrintJobOrientation sınıfını içe aktarmayı unutmayın. PrintJobOrientation sınıfı, sayfadaki içerik yönlendirmesini tanımlayan sabit değerler sağlar. Şu deyimi kullanarak sınıfı içe aktarırsınız:
import flash.printing.PrintJobOrientation;

Sayfa yüksekliğini ve genişliğini yanıtlama

Yazıcı yönlendirme ayarlarına benzer bir strateji kullanarak, sayfa yüksekliği ve genişliği ayarlarını okuyabilir ve if deyimine bir mantık gömerek bunları yanıtlayabilirsiniz. Aşağıdaki kod bir örneği gösterir:

if (mySprite.height > myPrintJob.pageHeight) 
{ 
    mySprite.scaleY = .75; 
}

Üstelik, aşağıdaki örnekte gösterdiği gibi, sayfa ve kağıt boyutları karşılaştırılarak sayfanın kenar boşluğu ayarları belirlenebilir:

margin_height = (myPrintJob.paperHeight - myPrintJob.pageHeight) / 2; 
margin_width = (myPrintJob.paperWidth - myPrintJob.pageWidth) / 2;