private void aggiungiImmagineAlCanvas(Canvas canvas, Fotografia foto, int riga, int col) { try { // Ricavo l'immagine da stampare IImmagine immagine; bool usoGrande = false; if (usoGrande) { AiutanteFoto.idrataImmagineDaStampare(foto); immagine = AiutanteFoto.idrataImmagineGrande(foto); immaginiPaginaPrecedente.Add(immagine); } else { AiutanteFoto.idrataImmaginiFoto(foto, IdrataTarget.Provino); immagine = foto.imgProvino; } Image img = new Image(); img.Stretch = Stretch.UniformToFill; img.StretchDirection = StretchDirection.Both; { // calcolo posizione left int tc = lavoroDiStampaTessera.paramStampaTessera.numColonne; double tuc = sizeLatoW * tc; double spaziow = (larghezzaEffettiva - tuc) / (tc + 1); double left = (spaziow * col) + (sizeLatoW * (col - 1)); img.SetValue(Canvas.LeftProperty, left); } { // calcolo posizione top int tr = lavoroDiStampaTessera.paramStampaTessera.numRighe; double tur = sizeLatoH * tr; double spazioh = (altezzaEffettiva - tur) / (tr + 1); double top = (spazioh * riga) + (sizeLatoH * (riga - 1)); img.SetValue(Canvas.TopProperty, top); } // Queste due dimensioni invece sono fisse img.Width = sizeLatoW; img.Height = sizeLatoH; img.HorizontalAlignment = HorizontalAlignment.Center; img.VerticalAlignment = VerticalAlignment.Center; if (immagine != null) { img.RenderSize = new Size(img.Width, img.Height); // TODO tento di tenere bassa la memoria img.BeginInit(); BitmapSource bs = ((ImmagineWic)immagine).bitmapSource; img.Source = bs; img.EndInit(); } canvas.Children.Add(img); } catch (Exception ee) { // Non rilancio l'eccezione perché voglio continuare a stampare _giornale.Error("Impossibile caricare immagime della foto: " + foto, ee); } }
private void aggiungiImmagineAlCanvas(Canvas canvas, Fotografia foto, double x, double y) { try { // Ricavo l'immagine da stampare IImmagine provino; if (usoGrande) { AiutanteFoto.idrataImmagineDaStampare(foto); provino = AiutanteFoto.idrataImmagineGrande(foto); if (Configurazione.UserConfigLumen.tecSogliaStampaProvini == -3) { IGestoreImmagineSrv g = LumenApplication.Instance.getServizioAvviato <IGestoreImmagineSrv>(); IImmagine provino2 = g.creaProvino(provino, 1000); provino = (IImmagine)provino2.Clone(); ((ImmagineWic)provino).bitmapSource.Freeze(); AiutanteFoto.disposeImmagini(foto, IdrataTarget.Originale); AiutanteFoto.disposeImmagini(foto, IdrataTarget.Risultante); } immaginiPaginaPrecedente.Add(provino); } else { AiutanteFoto.idrataImmaginiFoto(foto, IdrataTarget.Provino); provino = foto.imgProvino; } Image img = new Image(); img.Stretch = Stretch.Uniform; img.StretchDirection = StretchDirection.Both; img.SetValue(Canvas.TopProperty, (Double)(sizeLatoH * (y - 1)) + testataH); img.SetValue(Canvas.LeftProperty, (Double)(sizeLatoW * (x - 1) + margin / 2)); img.Width = sizeLatoW - margin; img.Height = sizeLatoH - margin; img.HorizontalAlignment = HorizontalAlignment.Center; img.VerticalAlignment = VerticalAlignment.Center; if (provino != null) { img.RenderSize = new Size(img.Width, img.Height); // TODO tento di tenere bassa la memoria img.BeginInit(); BitmapSource bs = ((ImmagineWic)provino).bitmapSource; img.Source = bs; img.EndInit(); } canvas.Children.Add(img); } catch (Exception ee) { // Non rilancio l'eccezione perché voglio continuare a stampare _giornale.Error("Impossibile caricare immagime della foto: " + foto, ee); } eventualiStampigli(canvas, x, y, foto); }