AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi printer.canvas.Textout spiegelverkehrt ausgeben ?

printer.canvas.Textout spiegelverkehrt ausgeben ?

Ein Thema von JoelH · begonnen am 20. Mai 2003 · letzter Beitrag vom 2. Dez 2005
Antwort Antwort
JoelH
(Gast)

n/a Beiträge
 
#1

printer.canvas.Textout spiegelverkehrt ausgeben ?

  Alt 20. Mai 2003, 14:30
Ich hab ein misteriöses Problem, ich hab ein Programm für einen Plotter geschrieben, leider druckt dieser, nicht wie seinen 'normalen' Kollegen meine Ausgaben richtig aus sondern die Texte sind Spiegelverkehrt. Der Plotter ist ein HP Designjet700.
Jetzt will ich ihn dahigehend austricksen dass ich im einfach die Texte spiegelverkehrt sende, allerdings hab ich leider keine Ahnung wie ich dies dem Textout beibringe.
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#2
  Alt 20. Mai 2003, 15:10
Ich glaub nicht, dass das mit textout so einfach geht, weil das ja nur einen ganz normalen text drucken kann (glaub ich zumindest). Was mir da jetzt so spontan eingefallen wäre, wäre einfach eine Spiegelschrift als Schriftart zu verwenden, also einfach einen Anderen Schrifttyp.

Vielleicht gibts aber auch ne einfachere Lösung.
Man liest sich, Stanlay 8)
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 20. Mai 2003, 15:20
Hier ein Anfang. Einfach mal testen.
Delphi-Quellcode:
var
  OldFontHandle: THandle;
  LogFont: TLogFont;
  FinalRect: TRect;
  Txt: String;
begin
  Txt := 'Sample';

  with PaintBox1 do
  begin
    SetGraphicsMode(Canvas.Handle, GM_ADVANCED);
    GetObject(Canvas.Font.Handle, SizeOf(LogFont), @LogFont);
    LogFont.lfEscapement := 1800;
    LogFont.lfOrientation := 0;
    LogFont.lfQuality := ANTIALIASED_QUALITY;
    OldFontHandle := Canvas.Font.Handle;
    Canvas.Font.Handle := CreateFontIndirect(LogFont);
    try
      FinalRect := Rect(50, 50, Width, Height);
      Windows.DrawText(Canvas.Handle, @Txt[1], Length(Txt), FinalRect,
          DT_EXTERNALLEADING + DT_NOPREFIX + DT_LEFT + DT_NOCLIP +
          DT_WORDBREAK);
    finally
      DeleteObject(Canvas.Font.Handle);
      Canvas.Font.Handle := OldFontHandle;
    end;
    SetTextCharacterExtra(Canvas.Handle, 0);
    SetGraphicsMode(Canvas.Handle, GM_COMPATIBLE);
  end;
end;
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#4

hmm,

  Alt 20. Mai 2003, 15:41
klasse, das geht schon, jetzt muss ich es nur noch für meine Zwecke implementieren.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#5
  Alt 20. Mai 2003, 15:51
Hallo,
sakura's Vorschlag läuft nicht unter Win9x Systemen.
Erst ab Win2000 (WinNT konnte ich nicht testen).

Warum drehst Du den String nicht einfach um. Sakura's Vorschlag macht das auch.

Delphi-Quellcode:
function SkipString(const Value: String): String;
var
  I : Integer;
  P : PChar;
begin
  SetLength(Result, Length(Value));
  P := PChar(Result);
  for I := Length(value) DownTo 1 do
    begin
      P^ := Value[I];
      Inc(P);
    end;
end;
Aber Achtung: ich habe gerade noch einmal über Spiegelverkehrt nachgedacht. Das bedeutet doch, dass man jeden Buchstaben an seine vertikalen Achse spiegeln muss. Das kann mein und Sakura's Vorschlag aber nicht.
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#6

hmm,

  Alt 21. Mai 2003, 07:06
also Sakura's Vorschlag dreht doch alles genauso wie ich es mir vorstelle. Also die Buchstaben selbst und von hinten nach vorne. Ich hoffe es rennt auch auf einer NT Kiste, dort brauch ich es nämlich.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#7
  Alt 31. Mai 2003, 15:37
Hallo,
sakura's Code spiegelt unter Win2k (D5 SP1) die Buchstaben nicht and der vertikalen Achse.
  Mit Zitat antworten Zitat
Benutzerbild von SnGtKs
SnGtKs

Registriert seit: 25. Dez 2004
Ort: Bad Liebenwerda
37 Beiträge
 
Delphi 7 Personal
 
#8

Re: printer.canvas.Textout spiegelverkehrt ausgeben ?

  Alt 2. Dez 2005, 22:15
um noch mal alten Kaffee aufzuwärmen ... ist stehe vor dem selben problem ... mit nem Bother Laser Drucker
Sebastian Quaß
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#9

Re: printer.canvas.Textout spiegelverkehrt ausgeben ?

  Alt 2. Dez 2005, 22:47
Hallo,

Ergebnis siehe Anlage:
Delphi-Quellcode:
var ZielRect,QuellRect : TRect;
    s : String;
begin
  Canvas.Font.Size := 30;
  s := 'Spiegelschrift geht so ???';
  Canvas.TextOut(0,0,s);
  QuellRect.Left := Canvas.TextWidth(s);//<---- Left ist größer
  QuellRect.Top := 0;
  QuellRect.Right := 0;//<---- als Right !!!
  QuellRect.Bottom := Canvas.TextHeight(s);
  ZielRect.Left := 0;
  ZielRect.Top := 50;
  ZielRect.Right := Canvas.TextWidth(s);
  ZielRect.Bottom := Canvas.TextHeight(s)+50;
  Canvas.CopyRect(ZielRect,Canvas,QuellRect);
Miniaturansicht angehängter Grafiken
spiegelschrift_111.jpeg  
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz