AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Text oder. Grafik neigen
Thema durchsuchen
Ansicht
Themen-Optionen

Text oder. Grafik neigen

Ein Thema von BrainCracked · begonnen am 23. Dez 2006 · letzter Beitrag vom 26. Dez 2006
Antwort Antwort
BrainCracked

Registriert seit: 18. Aug 2006
62 Beiträge
 
#1

Text oder. Grafik neigen

  Alt 23. Dez 2006, 20:04
Hallo,
wie im Titel berreits erwähnt möchte ich Einen Text oder eine Grafik neigen, sodass es dann so aussieht, als ob der Text liegen würde. So wie hier z.B.. Das soll nicht so umfangreich wie im Besoiel sin, sondern es reicht ein stink normaler Text.

MfG
BrainCracked
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Text oder. Grafik neigen

  Alt 23. Dez 2006, 20:09
Schau mal in der JVCL, ob es dort ne passende Komponente gibt.
Markus Kinzler
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Text oder. Grafik neigen

  Alt 23. Dez 2006, 20:17
Hallo,

mit MSDN-Library durchsuchenSetWorldTransform kannst Du eine Matrixtransformation anwenden. Damit sind solche Effekte kein Problem.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
BrainCracked

Registriert seit: 18. Aug 2006
62 Beiträge
 
#4

Re: Text oder. Grafik neigen

  Alt 23. Dez 2006, 20:25
Ah...dankeschön.
Mir ist aber gerade aufgefallen, dass ich das ganze doch mit einer Grafik und nicht einem Text machen müsste...gibt es da auch ne Möglichkeit?

MfG
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#5

Re: Text oder. Grafik neigen

  Alt 23. Dez 2006, 20:34
Zitat von xaromz:
wird auf ein DC angewendet, also geht es auch mit einer Grafik.
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
BrainCracked

Registriert seit: 18. Aug 2006
62 Beiträge
 
#6

Re: Text oder. Grafik neigen

  Alt 23. Dez 2006, 20:49
Also ich habe jetzt folgenden Code hier im Forum gefunden, weiß aber leider nicht richtig, wie ich den handhaben soll...

Delphi-Quellcode:
// uses Math (SinCos)

// zeichnet eine verdrehte Grafik auf einem Canvas
// aAngle ist der Drehwinkel im Uhrzeigersinn in Grad
// aOffsetX, aOffsetY gibt den Offset für das Zeichnen an

procedure DrawRotatedGraphic (aCanvas: TCanvas; aGraphic: TGraphic;
                              aAngle: Double; aOffsetX, aOffsetY: Integer);
var
  svMode: Integer;
  Mat, svMat: tagXFORM;
  si, co: Extended;
begin
  // aktuellen Zustand retten
  svMode := SetGraphicsMode(aCanvas.Handle, GM_ADVANCED);
  if (svMode = GM_ADVANCED) then
    GetWorldTransform(aCanvas.Handle, svMat);
  // Verschiebung in den Usprung
  FillChar (Mat, SizeOf(Mat), 0);
  Mat.em11 := 1.0;
  Mat.em22 := 1.0;
  Mat.eDx := -(aOffsetX + aGraphic.Width / 2);
  Mat.eDy := -(aOffsetY + aGraphic.Height / 2);
  SetWorldTransform(aCanvas.Handle, Mat);
  // Verdrehung
  SinCos (aAngle * Pi / 180, si, co);
  FillChar (Mat, SizeOf(Mat), 0);
  Mat.em11 := co;
  Mat.em12 := si;
  Mat.em21 := -si;
  Mat.em22 := co;
  ModifyWorldTransform(aCanvas.Handle, Mat, MWT_RIGHTMULTIPLY);
  // Zurückschieben
  FillChar (Mat, SizeOf(Mat), 0);
  Mat.em11 := 1.0;
  Mat.em22 := 1.0;
  Mat.eDx := (aOffsetX + aGraphic.Width / 2);
  Mat.eDy := (aOffsetY + aGraphic.Height / 2);
  ModifyWorldTransform(aCanvas.Handle, Mat, MWT_RIGHTMULTIPLY);
  // Bitmap zeichnen
  aCanvas.Draw(aOffsetX, aOffsetY, aGraphic);
  // alten Zustand wiederherstellen
  if (svMode = GM_ADVANCED) then
    SetWorldTransform(aCanvas.Handle, svMat)
  else
    SetGraphicsMode(aCanvas.Handle, svMode);
end;
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Text oder. Grafik neigen

  Alt 23. Dez 2006, 23:11
Hallo BrainCracked,

hier eine kleine Ergänzung:

Delphi-Quellcode:
// zeichnet eine gescherte Grafik auf einem Canvas
// sx, sy ist der Betrag der Scherung in x- und y-Richtung
// aOffsetX, aOffsetY gibt den Offset für das Zeichnen an

procedure DrawShearedGraphic (aCanvas: TCanvas; aGraphic: TGraphic;
                              sx, sy: Double; aOffsetX, aOffsetY: Integer);
var
  svMode: Integer;
  Mat, svMat: tagXFORM;
begin
  // aktuellen Zustand retten
  svMode := SetGraphicsMode(aCanvas.Handle, GM_ADVANCED);
  if (svMode = GM_ADVANCED) then
    GetWorldTransform(aCanvas.Handle, svMat);
  // Scherung
  FillChar (Mat, SizeOf(Mat), 0);
  Mat.em11 := 1;
  Mat.em12 := sy;
  Mat.em21 := sx;
  Mat.em22 := 1;
  Mat.eDx := aOffsetX;
  Mat.eDy := aOffsetY;
  SetWorldTransform(aCanvas.Handle, Mat);
  // Grafik zeichnen
  aCanvas.Draw(0, 0, aGraphic);
  // alten Zustand wiederherstellen
  if (svMode = GM_ADVANCED) then
    SetWorldTransform(aCanvas.Handle, svMat)
  else
    SetGraphicsMode(aCanvas.Handle, svMode);
end;
Der Aufruf der beiden Routinen könnte so aussehen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  bmp : TBitmap;
begin
  bmp := TBitmap.Create;
  try
    bmp.LoadFromFile ('C:\WINDOWS\winnt.bmp');
    DrawRotatedGraphic (Canvas, bmp, 15, 100, 100);
    DrawShearedGraphic (Canvas, bmp, -0.3, 0.0, 500, 100);
  finally
    bmp.Free;
  end;
end;
Die Grundlagen findest du bei Microsoft: MSDN-Library durchsuchenCoordinate Spaces and Transformations

Gruß Hawkeye
  Mit Zitat antworten Zitat
BrainCracked

Registriert seit: 18. Aug 2006
62 Beiträge
 
#8

Re: Text oder. Grafik neigen

  Alt 25. Dez 2006, 15:47
Ah..danke
Aber ich habe mir jetzt mal so einige gedanken gemacht und festgestellt, dass es doch besser wäre, wenn ich einen einfachen Text neigen würde. Wie stelle ich dies am besten an?

MfG
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Text oder. Grafik neigen

  Alt 26. Dez 2006, 15:57
Also was denn nun?

Für einfachen Text habe ich mal bei dsdt.info eine untion namens TextOutAngle oder so ähnlich gesehen.

Ansonsten würde ich einfach den text auf das bitmap zeichnen (canvas.textout) und dann das bitmap rotieren.


Die Function TextOutAngle gibts hier
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#10

Re: Text oder. Grafik neigen

  Alt 26. Dez 2006, 16:46
Hallo,

@NamenLozer: Er will den Text neigen, nicht drehen.

@Topic: Mein Ratschlag bleibt: Transformiere den DC mit MSDN-Library durchsuchenSetWorldTransform, zeichne den Text und setze die Transformation wieder zurück. Wie das prinzipiell funktioniert, kannst Du in den Beispielen oben nachlesen.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  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 02:48 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