Announcement

Collapse
No announcement yet.

Wie kann ich einen Teilbereich von einem canvas in ein anders canvas kopieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wie kann ich einen Teilbereich von einem canvas in ein anders canvas kopieren

    Hallo,

    ich arbeite zur zeit an einer Druck funktion. Damit ich die aktuelle Seite drucken kann muss ich einen Teilbereich von dem canvas Objekt,das mein Druckvorachau ist, in den printer.canvas kopieren. Weiss jemand wie?

  • #2
    Hallo Alex,<br>schau mal in der Delphi-Hilfe unter TCanvas.CopyRect nach.<br>Jens Schuman

    Comment


    • #3
      Danke Jens,

      das habe ich versucht, klappt auch ganz gut. Jezt habe ich aber das Problem, daß der Inhalt aus image.canvas nicht masstabsgetreu nach printer.canvas übernommen wird. ich habe es mit
      SetMapMode(printer.canvas.handle,MM_LOMETRIC);
      versucht. Dann kommt gar nichts. Wenn ich es weglasse, bekomme ich alles in minaturformat. Hast Du eine Idee, wie man das lösen kann?

      Gruß Serka

      Comment


      • #4
        Hallo Alex,<br>ich weiß nicht ob es von setMapMode abhängig ist, aber die positiven Y-Koordinaten werden auf der Drucker-Canvas nach oben abgetragen. Schreib mal vor die Y-Koordinaten ein Minus.<br>Oh, ich hasse Drucken !!!<br>Jens Schuman

        Comment


        • #5
          Hallo Alex,<br>mit folgendem Code kann ich ein Bild drucken.<br>
          <pre><font size="1" face="Verdana">
          -100 verschiebt das Ausgaberechteck um 1cm nach unten
          +100 verschiebt das Ausgaberechteck um 1cm nach rechts</font></pre>

          <pre><font size="1" face="Verdana">*2 vergrößert das Bild um 100%</font></pre>

          <pre><font size="1" face="Verdana">procedure TForm1.btnPrintClick(Sender: TObject);
          var
          PrintRect : TRect;
          CR : TRect;
          begin
          CR:=Image1.ClientRect;
          PrintRect:=Rect(CR.Left+100,-CR.Top*2-100,CR.Right*2+100,-CR.Bottom*2-100);
          With Printer do
          begin
          Orientation:=poPortrait;
          BeginDoc;
          SetMapMode(Handle,MM_LOMETRIC);
          Canvas.CopyRect(PrintRect,Image1.Picture.Bitmap.Ca nvas,CR);
          EndDoc;
          end;
          end;
          </font></pre>
          <br>Jens Schuman

          Comment


          • #6
            Hallo Jens,

            das geht. Dank

            Comment

            Working...
            X