V druhém dílu se již vrhneme na konkrétní novinky přicházející se Silverlightem 4.
Tisk ve webových aplikací byl doposud možný dvěma způsoby. První byla konverze dat do HTML a následné vyvolání tisku. Druhou možností je nechat uživatele stáhnout tiskovou sestavu v alternativním formátu, který uživatel rozpozná a vytiskne si jej sám. Například dokument ve formátu docx pro Microsoft Office Word nebo pdf.
Nová verze Silverlightu přináší možnost dovolující tisk přímo z okna běžící aplikace jako reakce například na stisknutí tlačítka. Nejprve kód:
C#
var prt = new PrintDocument(); prt.PrintPage += (s, args) => {
args.PageVisual = element;
}; prt.Print("Jméno sestavy");
VB.NET
Dim prt As New PrintDocument() AddHandler prt.PrintPage, Sub(s As Object, args As PrintPageEventArgs)
args.PageVisual = element End Sub
args.PageVisual = element
End Sub
prt.Print("Jméno sestavy")
První vytváříme instanci třídy PrintDocument. Té nastavíme reakci na událost PrintPage vyvolanou při generování dokumentu odesílaného do tiskárny po spuštění metody Print.
Uvnitř události PrintPage pak nastavujeme parametr PageVisual, kterým určujeme tisknutý element. Může to být téměř cokoliv od textového pole přes tlačítko, až po celý dokument. Není tak problém tisknout elementy nezahrnuté v hlavním zobrazeném layoutu. To dává skvělou možnost vytvořit speciálně pro tisk samostatný element v paměti, který bude reprezentovat tisknutý dokument. Další možností je vytvořit v paměti objekt s hlavičkou a patičkou tiskové sestavy a dovnitř tohoto objektu umístit obsah zobrazený na formuláři.
Chceme-li tisknout více stránek, stačí nastavit vlastnost HasMorePages na true a událost PageVisual se bude vyvolávat cyklicky tak dlouho, dokud nepřenastavíme HasMorePages zpět na false.
Pokud požadujete nějaké upřesňování tiskových parametrů, můžeme využít událostí StartPrint (vyvolána těsně před tiskem) a případně po tisku událost EndPrint.
Silverlight 4 nyní zahrnuje celou řadu nových exotických jazyků, které doposud chyběly. Ty jsou podporovány jak pro vykreslování textu, tak pro vstup. Pokud tedy využijete k ukládání například do databáze unicodový sloupec, máte zajištěnou podporu od češtiny, přes azbuku, až po písma indioárijckých jazyků.
Zde je kompletní seznam nových písem a odpovídajících jazyků:
Písmo
Jazyky
Bengali
Bengali, Assamese, Manipuri
Oriya
Malayalam
Kannada
Tamil
Telugu
Gujarati
Gurmukhi
Punjabi
Devanagari
Hindi, Marathi, Sanskrit, Konkani, Kashmiri, Nepali, Sindhi
Sada layoutovacích komponent byla rozšířena o ViewBox. Ten dává možnost přesně pozicovat a měnit úroveň roztažení, či smršťění nesoucího elementu. Je to velmi vítaný prvek ve vektorovém grafickém prostředí.
Nejvíce nás bude zajímat vlastnost Stretch. Definuje, jakým způsobem se bude vnitřní element zmenšovat, popřípadě zvětšovat. Toto je výčet možných hodnot:
Další důležitá vlastnost je StretchDirection definující způsob změny velikosti vnitřního elementu. Zabraňuje totiž obsahu ViewBoxu, aby se zmenšil na menší, či zvětšil větší rozměry než byl v originále. Toto jsou možnosti:
Například toto je kód, který zobrazí element tlačítka. Díky vlastnostem Stretch a StretchDirection nikdy nezvětší tlačítko nad 100% původní velikosti (DownOnly), ale v případě potřeby jej naopak změnší, aby se vešlo celé do zobrazeného ViewBoxu (Uniform):
<Viewbox Stretch="Uniform" StretchDirection="DownOnly"> <Button Content="Jsem ve ViewBoxu!" /> </Viewbox>
Protože komponenta ViewBox dokáže nést vždy jen jeden element, bude vhodné do něj ve složitějších případech umístit další layoutovací prvek (například Grid).
- Tomáš Jecha
Další díl seriálu: Webové úterý – Novinky v Silverlight 4 – díl 1.