Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [delphi]Stampa immagine


    Ho assolutamente bisogno di un suggerimento per stampare un'immagine jpg contenuta in un controllo TImage32 (libreria Graphic32). In realtà il lavoro da fare sarebbe molto più complesso, ma visto che non riesco neanche a stampare l'immagine così com'è ho pensato che per me sia meglio affrontare uno stadio alla volta. L'unica cosa che sono riuscita a fare è stampare la form completa di pulsanti.
    Ho provato con la guida in linea ma francamente ho una gran confusione in testa tra canvas, picture, bitmap...

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Per le esigenze più semplici, potresti usare l'oggetto TPrinter definita nella unit Printers per accedere ad alcune delle funzionalità base per l'interfacciamento della tua applicazione alla stampante.

    Nel codice che segue, viene inviata un'immagine contenuta in un controllo TImage facendo in modo che occupi tutta l'area del "foglio virtuale" della pagina:
    codice:
      var
        CurrentPrinter: TPrinter;
      begin
        CurrentPrinter := Printer;
        CurrentPrinter.BeginDoc;
        CurrentPrinter.Canvas.StretchDraw(CurrentPrinter.Canvas.ClipRect,
         Image1.Picture.Graphic);
        CurrentPrinter.EndDoc;
      end;
    Sulla Guida in linea trovi tutti gli altri metodi dell'oggetto Printer e del relativo oggetto Canvas per il tracciamento di elementi grafici.

    Tuttavia, io suggerisco sempre di usare un tool di reporting, come FuzzyReport, QuickReport o RAVE Reports, per semplificare la creazione di veri e propri report che controllano esattamente come l'immagine (o altri dati eventualmente allegati) vengano stampati.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Il mio problema è che TImage32 non contiene il membro picture.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Il controllo TImage32 "mima" le funzionalità del classico TImage, anche se non si tratta della stessa cosa in quanto il controllo fornisce molte funzionalità in più; ad esempio, non ha una proprietà Picture, ma ha una proprietà Bitmap che rappresenta l'immagine da visualizzare basata sul tipo di bitmap definito all'interno della libreria stessa e potenziato con metodi di disegno estremamente veloci rispetto alla sua controparte standard TBitmap della libreria VCL.

    Tra i metodi di questo "bitmap sotto steroidi", ve ne sono alcuni che consentono di giungere comunque ad un risultato in termini di stampa; ad esempio, ho modificato il codice di esempio precedente come segue:
    codice:
      var
        CurrentPrinter: TPrinter;
      begin
        CurrentPrinter := Printer;
        CurrentPrinter.BeginDoc;
        Image321.Bitmap.DrawTo(Printer.Canvas.Handle, Printer.Canvas.ClipRect, Image321.Bitmap.BoundsRect);
        CurrentPrinter.EndDoc;
      end;
    Ho usato il metodo DrawTo per scrivere il bitmap in un contesto di dispositivo, in questo caso quello relativo alla stampante, utilizzando l'area di destinazione come "area da riempire" con l'immagine e l'area del bitmap come sorgente (avrei potuto specificare solo una parte dell'immagine, volendo).

    "Giocherellando" con i metodi del TBitmap32, documentato anche nel file della guida allegato alla libreria Graphics32, è possibile ottenere probabilmente tanti altri effetti.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.