Vceravecer nez jsem sel spat jsem narazil na zajimavy problem – mel jsem tento kod(nijak jsem ho neupravoval, je z knihy Mistrovstvi ve WPF):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
//---------------------------------------------------- // PrintaBunchaButtons.cs (c) 2006 by Charles Petzold //---------------------------------------------------- using System; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; namespace Petzold.PrintaBunchaButtons { public class PrintaBunchaButtons : Window { [STAThread] public static void Main() { Application app = new Application(); app.Run(new PrintaBunchaButtons()); } public PrintaBunchaButtons() { Title = "Tisk spousty tlacitek"; SizeToContent = SizeToContent.WidthAndHeight; ResizeMode = ResizeMode.CanMinimize; // Vytvori tlacitko 'Tisk'. Button btn = new Button(); btn.FontSize = 24; btn.Content = "Tisk ..."; btn.Padding = new Thickness(12); btn.Margin = new Thickness(96); btn.Click += PrintOnClick; Content = btn; } void PrintOnClick(object sender, RoutedEventArgs args) { PrintDialog dlg = new PrintDialog(); if ((bool)dlg.ShowDialog().GetValueOrDefault()) { // Vytvori panel Grid. Grid grid = new Grid(); // Definuje pet radku a sloupcu s automatickou velikosti. for (int i = 0; i < 5; i++) { ColumnDefinition coldef = new ColumnDefinition(); coldef.Width = GridLength.Auto; grid.ColumnDefinitions.Add(coldef); RowDefinition rowdef = new RowDefinition(); rowdef.Height = GridLength.Auto; grid.RowDefinitions.Add(rowdef); } // Nastavi pro panel Grid gradientni stetec. grid.Background = new LinearGradientBrush(Colors.Gray, Colors.White, new Point(0, 0), new Point(1, 1)); // Kazdy program potrebuje trochu nahodnosti. Random rand = new Random(); // Umisti na panel Grid 25 tlacitek. for (int i = 0; i < 25; i++) { Button btn = new Button(); btn.FontSize = 12 + rand.Next(8); btn.Content = "Tlacitko c. " + (i + 1); btn.HorizontalAlignment = HorizontalAlignment.Center; btn.VerticalAlignment = VerticalAlignment.Center; btn.Margin = new Thickness(6); grid.Children.Add(btn); Grid.SetRow(btn, i % 5); Grid.SetColumn(btn, i / 5); } // Nastavi velikost panelu Grid. grid.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity)); Size sizeGrid = grid.DesiredSize; // Urci bod pro vystredeni panelu Grid na strance. Point ptGrid = new Point((dlg.PrintableAreaWidth - sizeGrid.Width) / 2, (dlg.PrintableAreaHeight - sizeGrid.Height) / 2); // Rozlozeni je hotovo. grid.Arrange(new Rect(ptGrid, sizeGrid)); // Nyni se vytiskne. dlg.PrintVisual(grid, Title); } } } } |
Problem byl tento, spustil jesm program, dal tisk a vyjela mi jen prazdna stranka. Sel jsem tedy na mamcin PC s Windows Vista v VC# 2010 a spustil program tam. Stranka uz nevyjela z tiskarny prazdna, ale potistena tak jak by mela byt(vlevo je vystup z mamcineho PC, vpravo z meho):
Timto jsem zjistil ze neco je v mem PC, resp. Windows. Prvne jsem chtel nainstalovat Visual Studio Express 2013 Preview for Windows Desktop(dale jen “Preview”) ale chvilku po instalaci jsem se rozhodl, ze zkusim radeji to v cistem Windowsu. Za 1) byl tuto noc velmi pomaly net tady a za 2) v mem uctu trval uklid instalace Preview celou vecnost. Mel jsem jednu 120GB partition, na ktere bylo par dat, tak jsem je presunul jinde a tuto partiton rozdelil na 3x40GB.
Uz jsem jednou prisel o celou partiton, mozna proto ze na ni bylo mnoho souboru, tak jsem se rozhodl, ze na zdrojove kody budu mit jine partition. Zkopiroval jsem si do PC obsah instalacky W7 abych si overil zda to neni poskrabane – nebylo. Tak jsem nabootoval do DVD ale W7 jsem si stejne nenainstaloval, protoze jsem mel dynamicky svazek. Ten disk jsem rozdelil pomoci toho nastroje ktery je ve Windows 8 a nabizel mi pouze “Simple volume”, v discich se moc neorientuji a nevim co to je dynamicky svazek.
Tak jsem to vzdal a chtel jsem preinstalovat .NET FW 4.5. Ale to taky neslo, z duvodu ze .net 4.5 je jiz soucasti Windows 8. Po tomto zjisteni jsem ten PC vypl a sel spat. Rano me napadlo ze mozna to nebude tak pomale kdyz si zalozim novy ucet. Tak jsem to tak taky udelal, a skutecne, instalace trvala asi jen 45minut. Na tom drivejsim uctu by trvala mozna i 2h. Otevrel jsem ten projekt(potesilo me ze VS2012 i 2013 maji stejne formaty projektu a reseni, nebot to nechtelo zadnou konverzi), zkompiloval, spustil a dal tisk.
Tiskarna se ale ani nehnula. Nepodarilo se mi nic vytisknout ani z notepadu, zvlastni ale je ze zkusebni stranka se mi vytiskla normalne. Odhlasil jsem se z tohoto uctu a sel na ten puvodni. Zde jsem zkusil tisk ve Preview, ale bylo to stejne jako ve verzi 2012 – projela jen prazdna stranka. Tak ja uz fakt nevim co s tim. Ty prechozi 2 programy na tisk v teto knizce mi fungovali, o to to je prave vsechno jeste tajemnejsi.
Prave na tuto kapitolu o tisku jsem se strasne moc tesil, protoze jsem jeste nikdy programatorsky nic netiskl a ted toto :/.
PS: Ted jsem zkusil dalsi program a ani ten nedopadl nijak uzasne na mem PC, srovnejte sami(nahore je spatny vystup z meho PC, dole spravny z mamcineho):
Myslim ze uz to nema cenu zkouset dal to opravit, pouze si ty programy spustim a vytisknu co maji(a to uz jsem udelal, vsechno vytisklo spatne), ale rad bych se na to podival az vyjde Windows 8.1, pokud budou i nejake upravy v .NETu – nejlepe nova verze(klidne i minor). Nadpis je trochu zavadejici, protoze vsechny tisknutelne prvky jsou typu Visual – a to i ty jednoduche elipsy, ktere mi jeste vytisknout sli.