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

    [delphi]stampa immagine

    Sto usando un componente per la visualizzazione di immagini che fa parte della libreria Graphic32.
    Il codice che mi permette di stampare l'immagine visualizzata nel controllo TImage32 cliccando su di un pulsante 'stampa' è:
    codice:
    procedure TImage32Form.btStampaClick(Sender: TObject);
    
      var
        CurrentPrinter: TPrinter;
      begin
        CurrentPrinter := Printer;
        CurrentPrinter.BeginDoc;
        ImgFoglioRettangolo.AutoSize:=true;
        ImgFoglioRettangolo.scalemode:=smnormal;
        ImgFoglioRettangolo.Bitmap.DrawTo(Printer.Canvas.Handle, Printer.Canvas.ClipRect, ImgFoglioRettangolo.Bitmap.BoundsRect);
        CurrentPrinter.EndDoc;
      end;
    Nonostante varie prove modificando in alcuni punti il codice il risultato che ottengo è sempre la stampa della mia immagine completa all'interno di un formato A4. Siccome le dimensioni originali dell'immagine sono 2000x1600 pixel la stampa risulta "costretta" all'interno del formato A4. Il risultato che vorrei ottenere, invece è quello di avere la stampa di quello che visualizzo a video (quello che rimane fuori video non lo voglio stampare) anche perché se eseguo un'ingrandimento e poi decido di stampare devo ottenere quella porzione di immagine ingrandita così come la vedo sullo schermo. E' possibile ottenere questo risultato?

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Non ho purtroppo molto tempo a disposizione per approfondire, ma credo si possa ottenere qualcosa giocando con le variabili "rettangolo" che passi al metodo DrawTo.

    Ad esempio, nel codice che hai riportato vi sono queste variabili:
    codice:
    Printer.Canvas.ClipRect
    ImgFoglioRettangolo.Bitmap.BoundsRect
    In sostanza, utilizzi il ClipRect della stampante che identifica il rettangolo relativo allo spazio dedicato alla pagina in cui possono risiedere gli elementi grafici.

    Il secondo parametro, Bitmap.BoundsRect, specifica un rettangolo relativo ai "confini" dell'intero bitmap da disegnare.

    Modificando il primo parametro, puoi ottenere un rettangolo di diverse dimensioni in cui copiare l'immagine; con il secondo parametro, invece, puoi stabilire quale porzione dell'immagine copiare.

    Ad esempio, supponendo di acquisire in una variabile il valore di Bitmap.BoundsRect e di modificarne la posizione e le dimensioni, potresti variare la parte di immagine da copiare nel Canvas della stampante; in quale area deve essere copiata tale porzione di immagine? in quella indicata dal primo parametro.

    Riassumendo, giocando su questi parametri puoi stabilire posizione e dimensione delle aree, rispettivamente quella di destinazione sul foglio virtuale della stampante e di origine del bitmap da stampare.

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

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

  3. #3
    Ho provato tutto il pomeriggio, evidentemente è troppo difficile per me. La spiegazione è stata molto chiara ma non ho idea di come fare ad inserire in una variabile le dimensioni dell'area che intendo stampare, oltretutto potrebbe trattarsi di un'area zoommata e non dell'immagine originale. Basterebbe riuscire a stampare ogni volta lo screenshot, penso...

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.