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);
            }
        }
Beispiel #2
0
        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);
        }