AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Text schräg auf Canvas ausgeben

Ein Thema von minimops · begonnen am 14. Jan 2006 · letzter Beitrag vom 2. Aug 2009
Antwort Antwort
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

Re: Text schräg auf Canvas ausgeben

  Alt 16. Mär 2009, 10:12
Entschuldigt bitte, dass ich ein altes Thema wieder aufmache: Ich konnte nicht anders

Ich möchte das Ganze beim Drucken benutzen. Die auszudruckenden Bilder sollen alle der Vermerk "Kopie" erhalten, so dass niemand mehr den Stempel zücken muss. Ich habe deshalb den Quellcode in meine an sich kurze Druck-Routine eingebaut. So weit so gut. Es wird dann auch der schräge Text gedruckt. Zu klein, an der falschen Stelle und nicht transparant, was sich aber vermutlich noch ändern ließe.

Ich habe aber ein Problem mit der Geschwindigkeit! Wenn ich nur eine einzige DIN-A4-Seite drucke, geht der Rechner für ca. 2 Minuten total in die Knie Liegt es an mir?

Mein Quelltext sieht nach dem Integrieren wie folgt aus, wobei DruckJob eine TStringList ist und Label4 ausgibt, wieviel Seiten des Auftrags schon gedruckt wurden:
Delphi-Quellcode:
Procedure TForm1.SpeedButton1Click(Sender: TObject);
Var
   I            : Integer;
   PNG         : TPNGObject;
   lf            : TLogFont;
   tf            : TFont;
Begin
   // Drucker zum Drucken auswählen
   Printer.PrinterIndex:=Printer.Printers.IndexOf(ComboBox1.Text);
   Try
      tf:=Font.Create;         // Zeiger auf Schrift
      PNG:=TPNGObject.Create;   // Zeiger auf PNG-Datei
      Printer.BeginDoc;         // Drucker vorbereiten
      Printer.Title:='Ausdruck';
      For I:=0 To Pred(DruckJob.Count) Do
      Begin
         PNG.LoadFromFile(DruckJob.Strings[I]);
         Printer.Canvas.StretchDraw(Rect(0,0,Printer.PageWidth,Printer.PageHeight),PNG);
         Printer.Canvas.Font.Name:='Arial';   // Schriftsart für Wasserzeichen
         Printer.Canvas.Font.Size:=24;         // Schriftgröße für Wasserzeichen
         tf.Assign(Printer.Canvas.Font);
         GetObject(tf.Handle,SizeOf(lf),@lf);
         lf.lfEscapement:=   320;
         lf.lfOrientation:=320;
         SetBkMode(Handle,TRANSPARENT);
         tf.Handle:=CreateFontIndirect(lf);
         Printer.Canvas.Font.Assign(tf);
         Printer.Canvas.TextOut(Width div 2, Height div 2, 'KOPIE');
         If I<Pred(DruckJob.Count) Then
            Printer.NewPage;   // Neue Seite anfangen
         PB1.Position:=I;
         Label4.Caption:=FormatFloat('#,##0',Succ(I));
         Application.ProcessMessages;
      End;
   Finally
      Printer.EndDoc;         // Druckauftrag beenden
      tf.Free;
      PNG.Free;
   End;
   Close;
End;
Schonmal Dank für Eure Ideen

Alex
Alex Winzer
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz