![]() |
Text oder. Grafik neigen
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 ![]() MfG BrainCracked |
Re: Text oder. Grafik neigen
Schau mal in der JVCL, ob es dort ne passende Komponente gibt.
|
Re: Text oder. Grafik neigen
Hallo,
mit ![]() Gruß xaromz |
Re: Text oder. Grafik neigen
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 |
Re: Text oder. Grafik neigen
Zitat:
|
Re: Text oder. Grafik neigen
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; |
Re: Text oder. Grafik neigen
Hallo BrainCracked,
hier eine kleine Ergänzung:
Delphi-Quellcode:
Der Aufruf der beiden Routinen könnte so aussehen:
// 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;
Delphi-Quellcode:
Die Grundlagen findest du bei Microsoft:
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; ![]() Gruß Hawkeye |
Re: Text oder. Grafik neigen
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 |
Re: Text oder. Grafik neigen
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 ![]() |
Re: Text oder. Grafik neigen
Hallo,
@NamenLozer: Er will den Text neigen, nicht drehen. @Topic: Mein Ratschlag bleibt: Transformiere den DC mit ![]() Gruß xaromz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 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