![]() |
Drehung um 90 Grad
Hallo,
ich habe hier ein rectangle vom Typ TRect und darauf ist ein Frame, nun will ich das von der Verticalen in die Horizontale drehen, dabei sollen beide (Rect und Frame) gedreht werden hier ein Auszug
Delphi-Quellcode:
wie sag ich ihm das, dass er sich um 90 Grad dreht ?
procedure THixBarGraph.Paint;
var R: TRect; H, W: Integer; begin inherited paint; if (Parent = NIL) or not visible then Exit; Canvas.Brush.Color := FColor; Canvas.FillRect(Rect(0, 0, Width, Height)); case FKind of sbVertical : begin H := (Height) div 2; W := (Width div 4) div 2; R := Rect((Width div 2) - W, (Height div 2) - H, (Width div 2) + W, (Height div 2) + H); Frame3D(Canvas, R, clBtnShadow ,clBtnHighlight , 1); end; sbHorizontal : begin H := (Width div 4) div 2; W := (Height div 2); R := Rect((Width div 2) - W, (Height div 2) - H, (Width div 2) + W, (Height div 2) + H); Frame3D(Canvas, R, clBtnShadow ,clBtnHighlight , 1); end; else; end; end; |
AW: Drehung um 90 Grad
Ganz ehrlich : Ich kapiers bis heute noch nicht was du da so wild rumrechnest mit div 4 und div 2 und was sonst noch so.
|
AW: Drehung um 90 Grad
:dp:
|
AW: Drehung um 90 Grad
Zeig doch mal einen Screenshot von Deinem Formular und dann eine Skizze wie es Deine Komponente "gedreht" aussehen soll.
Ist da auch Text drauf oder ein Bild oder andere Controls, die mit gedreht werden sollen oder so? |
AW: Drehung um 90 Grad
Man muss zu dem Thema hier ein wenig diese Vorgeschichte kennen:
![]() |
AW: Drehung um 90 Grad
kennt er !!!
:wiejetzt: |
AW: Drehung um 90 Grad
Liste der Anhänge anzeigen (Anzahl: 1)
So hier ein Screenshot, habs rot eingefärb
|
AW: Drehung um 90 Grad
Und wie sieht es gedreht aus?
Und wie soll es gedreht aussehen? Formuliere Deine Fragen mal präziser, sonst wird das Helfen schwerer und Du bekommst weniger Antworten... (nur so als Tipp ;-) ) |
AW: Drehung um 90 Grad
es soll genauso aussehen, bloß halt "liegend" einmal umkippen :lol:
|
AW: Drehung um 90 Grad
Du kannst Grafiken auch an Deinen Beitrag anhängen, dann muss man nicht erst eine PDF herunterladen. Das horizontal/vertikal soll sich nur auf den Rahmen beziehen, habe ich das richtig verstanden?
|
AW: Drehung um 90 Grad
ja weiß ich, hab bloß einen Internetrechner und einen Rechner der nicht am Netz ist, daher muss ich immer switchen !
Also es Sollen sich beide drehen, einmal das Rectangle in die Horizontale und der Rahmen auch ! |
AW: Drehung um 90 Grad
Bist Du sicher, dass Du das so willst? Dann hättest Du nämlich ggf. erheblichen "Freiraum" innerhalb der Komponente. Width und/oder Height neu zu setzen sollte sich von selbst verbieten, da man mit so etwas den Anwender einer Komponente in den Wahnsinn treiben kann. Also bleibt man innerhalb der im Objektinspektor festgelegten Grenzen, muss dann aber ggf. skalieren, so dass wie gesagt möglicherweise eine Menge Platz bleibt.
|
AW: Drehung um 90 Grad
wie meinst Du das, im Prinzip soll das Ding eine Messanzeige sein, was ich später einmal horizontal oder vertikal in meine Form packen möchte, die Abmaße sollen immer gleich bleiben...
Theoretisch würde es ja reichen, wenn ich die koordinaten der Horizontalen tausche, so müsste es vertikal angezeigt werden, machter aber nicht... |
AW: Drehung um 90 Grad
Nimm Dir mal ein Blatt Papier in DIN A4. Da malst Du ein Rechteck drauf mit ca. 1/4 Blattbreite und voller Blatthöhe und schneidest es aus. Bekommst Du diesen Ausschnitt nun komplett auf ein anderes A4-Blatt, wenn Du ihn um 90 Grad drehst?
|
AW: Drehung um 90 Grad
nein
|
AW: Drehung um 90 Grad
Und da liegt eben das Problem, sobald die Komponente nicht quadratisch ist. Soll gestaucht, skaliert oder abgeschnitten werden? Diese Frage musst Du Dir zuerst selbst beantworten, bevor man Dir adäquat helfen kann.
|
AW: Drehung um 90 Grad
Liste der Anhänge anzeigen (Anzahl: 1)
ok, ich hab das mal nachgemalt
soll so dann aussehen einmal Vertikal und einmal horizontal |
AW: Drehung um 90 Grad
die Abmaße sollen sich bei der Drehung nicht verändern
|
AW: Drehung um 90 Grad
Vielleicht liegt ein grundsätzliches Missverständnis vor?
Du kannst eine Komponente (z.B. ein Memo oder halt auch Deine) nicht einfach drehen. Du kannst eine Komponente nur sehr hoch und schmal oder sehr breit und flach zeichnen und den Inhalt anpassen. Somit dreht sie sich optisch, tatsächlich ändert sie aber nur die höhe und Breite und zeichnet den Inhalt neu. Dann kannst Du so etwas machen wie
Delphi-Quellcode:
Hilf das irgendwie?
if Height >= Width then
RahmenImHochformatZeichnen else RahmenImQuerformatZeichnen; |
AW: Drehung um 90 Grad
ja glaub auch,
ich versuchs mal |
AW: Drehung um 90 Grad
geht alles nicht..........:kotz:
|
AW: Drehung um 90 Grad
Zitat:
Ich aber vorhin etwas herumprokrastiniert:
Delphi-Quellcode:
Einfach die gewünschte Höhe und Breite von dem Bargraph einstellen, dann wird das automatisch gezeichnet. Müsste natürlich noch aufgeräumt werden. Fabstand verändert die Länge des Balkens in der Mitte.
procedure THixBarGraph.Paint;
var R: TRect; H, W: Integer; lAbstand: integer; begin inherited paint; if (Parent = NIL) or not visible then Exit; Canvas.Brush.Color := clRed; Canvas.FillRect(Rect(0, 0, Width, Height)); if Width < height then begin lAbstand := min(height div 2, FAbstand); H := (Height) div 2; W := (Width div 4) div 2; R := Rect((Width div 2) - W, lAbstand, (Width div 2) + W, Height - lAbstand); Frame3D(Canvas, R, clBtnShadow ,clBtnHighlight , 1); end else begin lAbstand := min(Width div 2, FAbstand); H := (Width div 2); W := (Height div 4) div 2; R := Rect(lAbstand, (Height div 2) - W, Width - lAbstand, (Height div 2) + W); Frame3D(Canvas, R, clBtnShadow ,clBtnHighlight , 1); end; end; |
AW: Drehung um 90 Grad
Hey,
danke Dir, hab das mal alles angepasst und jetzt macht er auch, das was ich wollte ! :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:52 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