Entwickler-Ecke

Multimedia / Grafik - Form rotieren lassen


Roy - So 14.01.07 16:28
Titel: Form rotieren lassen
Hallo Zusammen,

ich möchte eine Arbeitsform rotieren lassen. Welche Möglichkeiten bzw. welche Code sind möglich.

Danke Roy


Saubäär - So 14.01.07 16:30

Hi Roy,

möchtest du es um seine eigene Achse rotieren lassen oder um einen Punkt auf dem Desktip rotieren lassen?

Gruß

Saubäär


Roy - So 14.01.07 17:05

Hallo ich Grüße dich. Sie soll sich um seine eigene Achse drehen


JayEff - So 14.01.07 17:13

Oh weh. Da haste dir ja was vor genommen ... Äähm ... Du meinst ... auch die Steuerelemente (Edits, Labels etc.) sollen sich drehen? um einen Drehpunkt auf der Form, oder eine Achse, dreidimensional in die Bildfläche hinein, oder ... kannst du vielleicht mal eine schematische Zeichnung posten? ^^


Roy - So 14.01.07 17:16

ja so dachte ich. Die Bilder sollen sich mit drehen.


JayEff - So 14.01.07 17:19

Nun, eine Möglichkeit wäre einen Screenshot davon machen, die Form komplett transparent zu machen und nur den Screenshot anzuzeigen - Wie das geht? Keine ahnung. Gibts sicher was im Forum dazu, is aber (IIRC) wahnsinnig kompliziert und so, ausserdem, den Screenshot zu drehen, dazu brauchst einen Algorithmus mit Kantenglättung und alles, ebenfalls wahnsinnig kompliziert ... Sorry, aber für mich persöhnlich hört sich deine Idee völlig unmöglich an, ich hoffe, dass es Leute gibt, die dir helfen können ... :|


Roy - So 14.01.07 17:19

wie wäre die Einfachste Variante ohne das sich die Bilder mitdrehen??


JayEff - So 14.01.07 17:21

Ähm ... die gibts wäre dann wohl mit dieser OpenSource Unit oder was auch immer das war, Da gabs mal was ...

Es gab mal etwas im Forum, mit dem man der Form eine beliebige ...Form geben konnte, also rund, dreieckig etc. und damit könnte man das vielleicht machen ...


Saubäär - So 14.01.07 17:39

Hi Roy,

also um einen Punkt auf dem Desktop wäre noch relativ einfach.

user profile iconJayEff hat folgendes geschrieben:

Es gab mal etwas im Forum, mit dem man der Form eine beliebige ...Form geben konnte, also rund, dreieckig etc. und damit könnte man das vielleicht machen ...


Meintest du vllt. GabesOddForm ??

Gruß

Saubäär


Reinhard Kern - So 14.01.07 20:21
Titel: Re: Form rotieren lassen
user profile iconRoy hat folgendes geschrieben:
Hallo Zusammen,

ich möchte eine Arbeitsform rotieren lassen. Welche Möglichkeiten bzw. welche Code sind möglich.

Danke Roy


Hallo,

ich schätze, das kommt auf einen Neuaufbau der VCL heraus: alle Komponenten, die dafür verwendet werden, müssten so umgeschrieben werden, dass die Paint-Methoden entweder 2D (Drehen und Verschieben) oder auch gleich 3D (perspektivische Darstellungen) Operationen durchführen.

Das grösste Problem wird dabei sein, Windows dazu zu bringen, etwa einem Button seine Mausoperationen zuzuordnen, obwohl er jetzt ein schräg stehendes Trapez ist - wahrscheinlich muss man alle Komponenten auf Regions umstellen.

Viel Spass dabei.

Gruss Reinhard


JayEff - So 14.01.07 20:52

Ja, wenn er die Controlls mitdrehen lassen will, nein, wenn es ihm reicht, die Form (Das Aussehen meine ich jetzt) der Form drehen zu lassen. Hoffen wir, dass ihm das zweitere reicht ;)


Reinhard Kern - So 14.01.07 22:01

user profile iconJayEff hat folgendes geschrieben:
Ja, wenn er die Controlls mitdrehen lassen will, nein, wenn es ihm reicht, die Form (Das Aussehen meine ich jetzt) der Form drehen zu lassen. Hoffen wir, dass ihm das zweitere reicht ;)


Hallo,

stell dir mal geistig vor, wie eine gedrehte Form aussieht, wenn alle Controls waagrecht bleiben - das kann nicht sinnvoll sein.

Und wenn ich weiter drüber nachdenke: man braucht nicht eine neue VCL, sondern eine ganze graphische Oberfläche - man kann ja auch von Windows nichts mehr verwenden, keine Rahmen, keine Menues usw. Für 3D gibt es ja sowas, aber perspektivisches Kippen ist wahrscheinlich sogar einfacher als das Drehen der Fenster. Also bei Null anfangen wie Qt oder Java Swing.

Es sind im übrigen immer die vermeintlich einfachen Sachen, die die grössten Schwierigkeiten machen: bau mal einen Computer, der eine Katze von einem Hund unterscheiden kann. Jedes Kind kann das.

Gruss Reinhard


jaenicke - So 14.01.07 22:35

Ich würde einen Screenshot machen und den dann in OpenGL füttern und es damit drehen ;-).
Wie das geht, steht beides hier im Forum. Bei dem OpenGL-Beispiel-Thread ging es darum ein Blatt zu drehen, aber ich hab jetzt leider nicht die Zeit, die entsprechenden Topics zu suchen...


F34r0fTh3D4rk - So 14.01.07 23:23

ok hier die einfachste methode die du machen kannst:

du blendest dein programm aus und machst nen screenshot
du blendest dein programm ein und machst noch einen screenshot
dann nimmst du das erste bild als hintergrund und berechnest ein zweites bild, welches genau deiner form entspricht und eben einer farbe die später transparent sein soll, das geht einfach, da du ja einmal das bild mit und einmal ohne form hast.
du zeichnest den kompletten desktop via opengl oder directx auf den ganzen bildschirm und dann dein formular drauf, welches du dann beliebig drehen kannst.

alternative:
es gibt diverse möglichkeiten, u.a. mit directx direkt auf den desktop zu zeichen, einfachmal suchen.


mfg


Calyptus - So 14.01.07 23:24

Gibt es keine Möglichkeit sich seine Form in OpenGL 'übersetzen' zu lassen. Also so, dass OpenGL Mausklicks und Tastendrücke usw an die Form weiterleitet? Wenns sowas gäbe, dann wäre dass mit dem Drehen ja kein Problem mehr.


Roy - Mo 15.01.07 16:43

Hallo hier im Tread,

vielen Dank für die große Anteilnahme zu meiner Frage. Werde einige Vorschläge ausprobieren. Sorry das ich erst jetzt wieder mit Poste, hatte keine Zeit.


Sinspin - Mo 15.01.07 17:21

Wow, also wirklich auf Ideen kommen die Leute....
Ich finde die Idee zwar abgefahren, aber einfach mal ausprobieren wäre sicherlich ne tolle Programmierübung! Denn was da auf dich zukommt, wenn es wirklich genil aussehen soll, ist schon ein bischen Arbeit.
OpenGL würde dich auf jeden Fall bei den Mausereignissen unterstützen. Die kannst du so auswerten lassen das du erfährst wenn in bestimmte Flächen geklickt wurde.
Aber du musst alle Steuerelemente selber erstellen damit sie die Rotation unterstützen und troztdem noch die Ereignisse verarbeiten. Das ist schon ein ganz ordentliches Häufchen Arbeit. Ich habe mit selber mal eine komplette API gebaut. Leider ist sie nicht nach Windows portierbar :(
Also ich bin gespannt auf dein Ergebnis. Viel Erfolg.


F34r0fTh3D4rk - Mo 15.01.07 18:42

das macht die sache dann um einiges kniffliger ;) ich dachte, die form sollte sich nur so als effekt einfach mal drehen, aber so wäre das echt hart.

mfg