AGB  ·  Datenschutz  ·  Impressum  







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

Text spiegeln

Ein Thema von Moony · begonnen am 18. Aug 2005 · letzter Beitrag vom 18. Aug 2005
Antwort Antwort
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#1

Text spiegeln

  Alt 18. Aug 2005, 13:45
Hallo zusammen,

habe das Problem, daß ich einen Text spiegeln auf ein Canvas spiegeln will. Bei Bildern gibt es ja die Funktion StretchBlt().

Gibt es sowas für Texte? Normal gebe den Text über ShowText() aus.

Hoffe mir kann da jemand weiterhelfen.

gruß, moony
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

Re: Text spiegeln

  Alt 18. Aug 2005, 13:54
Zitat von Moony:
habe das Problem, daß ich einen Text spiegeln auf ein Canvas spiegeln will. Bei Bildern gibt es ja die Funktion StretchBlt().
Wer oder was hält dich davon ab diese Funktion auch für Text zu benutzen?

Einfach auf einen MemDC, dann auf den echten blitten ... fertsch!
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Text spiegeln

  Alt 18. Aug 2005, 13:54
schreibe doch den text in ein Bitmap
Bitmap.canvas.TextOut ();
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Text spiegeln

  Alt 18. Aug 2005, 14:20
@Olli:
Diese Funktion ist zum spiegeln von Bitmaps. Und da mein Text als Text an das Canvas geschickt wird. Ansonsten würde es die Texteigenschaften verlieren.

@Kroko:
Über den TextOut() kann ichaber nicht den Text spiegeln.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Text spiegeln

  Alt 18. Aug 2005, 14:21
Er meinte, du sollst den Text in ein Bitmap ausgeben und dann das Bitmap drehen (denke ich).
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#6

Re: Text spiegeln

  Alt 18. Aug 2005, 14:27
Zitat von Stanlay Hanks:
Er meinte, du sollst den Text in ein Bitmap ausgeben und dann das Bitmap drehen (denke ich).
Exakt das meinte ich. Allerdings kann eine Bitmap sowieso nur in einem DC existieren, weshalb ich auch vom DC sprach. Und MSDN-Library durchsuchenStretchBlt() benutzt bekanntlich auch Handles zu DCs, nicht zu Bitmaps.
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Text spiegeln

  Alt 18. Aug 2005, 14:38
Jedoch besteht ein weiteres Problem bei TextOut(), und zwar daß diese Funktion keinen Zeilenumbruch macht. Was z.B. der ExtTextOut() macht.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Text spiegeln

  Alt 18. Aug 2005, 14:48
Danke Leute, aber ich habe das jetzt anders gelöst:

Ich zeichne den Text auf ein Image.Canvas, erstelle mit dieser Funktion ein Bitmap:
Delphi-Quellcode:
procedure DrawImage(Canvas: TCanvas; DestRect: TRect; ABitmap: TBitmap);
var
  Header, Bits : Pointer;
  HeaderSize : DWord;
  BitsSize : DWord;
begin
  GetDIBSizes(ABitmap.Handle, HeaderSize, BitsSize);
  GetMem(Header, HeaderSize);
  GetMem(Bits, BitsSize);
  try
    GetDIB(ABitmap.Handle, ABitmap.Palette, Header^, Bits^);
    StretchDIBits(Canvas.Handle, DestRect.Left, DestRect.Top,
        DestRect.Right - DestRect.Left, DestRect.Bottom - DestRect.Top,
        0, 0, ABitmap.Width, ABitmap.Height, Bits,TBitmapInfo(Header^),
        DIB_RGB_COLORS, SRCCOPY);
  finally
    FreeMem(Header);
    FreeMem(Bits);
  end;
end;
und spiegel das Ganze mit der StretchBlt().


Das einzige Problem was jetzt noch besteht ist, daß ich zwischendurch Textreste vom Spiegeln habe...
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#9

Re: Text spiegeln

  Alt 18. Aug 2005, 14:48
Zitat von Moony:
Jedoch besteht ein weiteres Problem bei TextOut(), und zwar daß diese Funktion keinen Zeilenumbruch macht. Was z.B. der ExtTextOut() macht.
... oder DrawText() und DrawTextEx() ... und wer hindert dich hier wiederum daran dann eben diese Funktionen zu verwenden um auf den MemDC zu schreiben, in den vorher eine Bitmap selektiert wurde???
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: Text spiegeln

  Alt 18. Aug 2005, 14:51
Eigentlich: neue Frage, neuer Thread - aber egal:

1. So weit ich weiß, kann ExtTextOut auch keinen Umbruch. Dafür musst du DrawText oder DrawTextEx nehmen.
2. Für das Spiegeln könntest du dir auch mal die API-Funktionen SetWindowOrg/Ext und SetViewportOrg/Ext ansehen (oder SetWorldTransform). Damit müsste man auch gespiegelte Dinge machen können. Sind aber nicht ganz einfach zu verstehen.

//EDIT: Roten Kasten ignoriert 8)
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  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 19:35 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