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

    [DELPHI]: Coordinate di stampa di un'immagine

    Salve, ho un problema con la stampa delle immagini.

    Per stampare un'immagine contenuta in un controllo TImage, utilizzo il seguente codice (dopo aver dichiarato Printers in Uses):

    codice:
    procedure TForm1.Button1Click(Sender: TObject);
      var
      ScaleX, ScaleY: Integer;
      RR: TRect;
    begin
      with Printer do
      begin
        BeginDoc;
        try
          ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
          ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
          RR := Rect(0, 0, Image1.picture.Width * scaleX, Image1.Picture.Height * ScaleY );
          Canvas.StretchDraw(RR, Image1.Picture.Graphic);
        finally
          EndDoc;
        end;
      end;
    
    end;
    Quello che non sono riuscito a fare è cambiare le coordinate di stampa.

    In pratica, vorrei che l'immagine venisse stampata non nell'angolo superiore sinistro del foglio, ma con coordinate X=250 e Y=250.

    Ho provato a cambiare "Rect(0, 0..." in "Rect(250, 250..." ma questa modifica incide anche sulle proporzioni dell'immagine.

    Esiste un metodo veloce per cambiare le coordinate?

    Grazie in anticipo.
    http://www.espositosoftware.it

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Temo che il problema sia dovuto solo ad una piccola svista nell'uso della funzione Rect che accetta come parametri le coordinate dei due punti in alto a sinistra e in basso a destra che determinano il rettangolo.

    Nel tuo caso, il secondo dato viene specificato usando le dimensioni dell'immagine, opportunamente "scalate".

    Trattandosi appunto delle coordinate dei punti, e non della coordinata del primo e delle dimensioni, se aggiungi 100 pixel alle coordinate del primo punto spostandolo verso il basso e verso destra, devi spostare anche le coordinate del secondo punto aggiungendo lo stesso numero di pixel.

    La differenza tra i due determina la dimensione dell'immagine.

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

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

  3. #3
    Grazie. Mi è bastato seguire il tuo consiglio per risolvere il problema nel seguente modo:

    codice:
    RR := Rect(400, 400, (Image1.picture.Width * scaleX) + 400, (Image1.Picture.Height * ScaleY) + 400 );
    Saluti.
    http://www.espositosoftware.it

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 © 2024 vBulletin Solutions, Inc. All rights reserved.