| Autor |
Beitrag |
Larus
      
Beiträge: 431
|
Verfasst: Di 06.07.04 17:00
Bei ebay als JavaScript schon gesehen, der Text, der sich um die Maus dreht! Die Maus in der mitte, der Text im kreis immer drumherum, über der Maus klein, unter der Maus groß!
|
|
Benutzername
      
Beiträge: 210
Win XP Pro
Delphi 7 PE, D2005 Prof. SSL
|
Verfasst: Di 06.07.04 17:37
Und was möchtest du jetzt von uns? 
|
|
Larus 
      
Beiträge: 431
|
Verfasst: Di 06.07.04 17:43
Titel: Sourcecode vieleicht?
Vieleicht ein paar Sourcecodeauszüge mit erklärungen? Damit ich das ganze lernen und verstehen kann! 
|
|
FAlter
      
Beiträge: 192
Win XP Home
Turbo Delphi 2006 (Win32), C# (VS 2008 Prof.), Java (Eclipse), PHP
|
Verfasst: Di 06.07.04 18:10
Ich denke, du verstehst es besser, wenn du den JS-Code übersetzt...
|
|
Larus 
      
Beiträge: 431
|
Verfasst: Di 06.07.04 18:41
Titel: Witzig...
Haha...  erstens ist der saulang,  und zweitens bin ich noch nicht so gut  als das ich das so ohne weiteres machen könnte!  Du weißt, da war die Sache mit, | Zitat: | | Vieleicht ein paar Sourcecodeauszüge mit erklärungen? Damit ich das ganze lernen und verstehen kann! | 
|
|
MartinPb
      
Beiträge: 698
|
Verfasst: Di 06.07.04 20:14
Das kriegst du zwar auch mit Delphi hin, aber nicht so einfach wie Java Script. Delphi kann das nicht von sich aus. Auf die Schnelle fallen mir paar Arten ein:
1. Zeichnen. Das klappt solange die Maus über einer Canvas ist. Spätestens wenn man über einer anderen Komponente ist bricht das zusammen.
2. Labels. Man generiert soviel Labels wie Buchstaben und läßt die Labels um die Maus schweben. Aber hier haben wir das gleiche Problem wie in Punkt 1. Möglichkeit wäre permanent den Eigentümer zu wechseln, aber einige Komponenten lassen das nicht zu.
3. Desktop Canvas. Hier hätte man die Probleme mit den Komponenten nicht, da man ohne Probleme über alles zeichnen kann. Allerdings würde das System gelegentlich das ganze zusammenbrechen lassen, weil es irgendein Refresh ausführt. Hier müßte man sofort reagieren, sonst hat man plötzlich Lücken.
4. Form2 und Sonderform. Man würde Form2 permanent eine neue Sonderform geben. Das ganze würde das Systen allerdings stark belasten.
Keins von den Punkten ist das Wahre. Vielleicht haben die Anderen bessere Ideen.
_________________ Gruß
Martin
|
|
sourcehunter
      
Beiträge: 482
Win XP | Suse 10.1
Delphi 2005 Pers.
|
Verfasst: Di 06.07.04 20:27
Unter WinXP gibt es eine Eigenschaft bei Forms namens AlphaBlend, dazu gehört noch AlphaBlendValue, damit kannst du ein Form durchsichtig machen, wenn du jetzt ein Form so groß wie den Bildschirm machst, dann kannst du 1. auch auf deinen ganzen Bildschirm anwenden. Oder vieleicht kannst was mit TransparentColor und TransparentColorValue anfangen, denn dan kannst du auch auf das unter deinem Form mit der Maus zugreifen.
_________________ Linux und OpenSource rulez!
|
|
maximus
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: Di 06.07.04 21:28
Mit directX 9 und den neuen bitmap-font-interface (ID3DXFont9 summer 2003 update) sollte das relativ performant zu machen sein...is aber ziemlich komplex und du benötigst matrizen methematik, damit es korrekt um die maus transformiert wird  Das is wohl nix für zwischen durch, so wie bei dem JavaScript gelöt.
// edit: vielleicht mit GDI+
_________________ mfg.
mâximôv
|
|
sourcehunter
      
Beiträge: 482
Win XP | Suse 10.1
Delphi 2005 Pers.
|
Verfasst: Di 06.07.04 22:11
ich hab hier mal schnell was gehackt, vieleicht nicht das was du willst, aber ein guter Anfang, so als Ideenfinder.
server.freewebspace....rcehunter/index.html
Unter Downloads, das Programm "Loch im Desktop" downloaden.
_________________ Linux und OpenSource rulez!
|
|
Criz
      
Beiträge: 18
Win XP Prof.
D6 Ent, D7 Ent
|
Verfasst: Mi 07.07.04 13:24
Hi,
ich hab mich mal 'rangewagt und probiert, das Problem per dynamischem Array zu lösen.
Funktioniert auch alles prima, bis auf das Drehen des Kreises, das hab ich nicht hinbekommen.
Hier der Code:
globale Variablen und Konstanten:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| var Form1: TForm1; schwarm: array of TLabel;
const mausText: string = '2004 by cr!z '; |
Array of TLabel erzeugen und anpassen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.FormCreate(Sender: TObject); var i: integer; begin SetLength(schwarm, length(mausText)); for i := 0 to length(mausText) - 1 do begin schwarm[i] := TLabel.Create(Self); with schwarm[i] do begin Parent := Self; Font.Name := 'Terminal'; Font.Color := clRed; Caption := mausText[i + 1]; Top := 10 + i * 10; end; end; end; |
Kreis-Text-Funktion:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.Timer1Timer(Sender: TObject); var r, i, c: integer; Xk, Yk, Xm, Ym, Xp, Yp: integer; begin Xm := Mouse.CursorPos.X - Self.Left; Ym := Mouse.CursorPos.Y - Self.Top - 25; Xp := Xm + 32; Yp := Ym + 32; r := Round(Sqrt((Xm - Xp) * (Xm - Xp) + (Ym - Yp) * (Ym - Yp))); c := 1; for i := 0 to 360 do begin Xk := Xm + Round(r * Cos((i - 45) * pi / 180)); Yk := Ym + Round(r * Sin((i - 45) * pi / 180)); if i = c * Round(360 / Length(mausText)) + t then begin schwarm[c - 1].Left := Xk; schwarm[c - 1].Top := Yk; inc(c); end; end; end; |
PS: Die Kreis-Funktion ist nicht von mir, die hab ich irgendwo aus diesem Forum und dann angepasst.
Hoffe, ich konnte dir helfen
_________________ War spät gestern.
|
|
MSCH
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: Mi 07.07.04 19:06
hmmm - mit der Kirche ums dorf, sozusagen. Warum nicht einfach einen animierten Cursor basteln? Dauert ca. 1 stunde und drei bis 4 Zeilen Quellcode. fertig.
oder bin ich im falschen Film??
grez
msch
_________________ ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
|
|
sourcehunter
      
Beiträge: 482
Win XP | Suse 10.1
Delphi 2005 Pers.
|
Verfasst: Mi 07.07.04 20:53
Du brauchst in deiner timer-Prozedur noch eine globale Variable, die du mit jedem Event einmal erhöhst. Den wert Addierts du dann in der Winkelfunktionen un Zeile 13 und 14.
_________________ Linux und OpenSource rulez!
|
|
Criz
      
Beiträge: 18
Win XP Prof.
D6 Ent, D7 Ent
|
Verfasst: Mi 07.07.04 21:42
@msch:
Das mit dem animierten Cursor ist unpraktisch, da du hierbei den Text nicht variieren kannst. Außerdem ist der Cursor meines Wissens auf 32*32 px beschränkt.
@sourcehunter:
So was ähnliches hatte ich schon eingebaut, die Buchstaben haben sich dann auch um die Maus gedreht, allerdings nur einmal (360°), danach sind sie auf der Form hängengeblieben (ganz komisch)
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| for i := 0 to 360 do begin Xk := Xm + Round(r * (Cos((i - 45) * pi / 180))); Yk := Ym + Round(r * (Sin((i - 45) * pi / 180))); if i = c * Round(360 / Length(mausText)) + t then begin schwarm[c - 1].Left := Xk; schwarm[c - 1].Top := Yk; inc(c); end; end; inc(t); |
_________________ War spät gestern.
|
|
sourcehunter
      
Beiträge: 482
Win XP | Suse 10.1
Delphi 2005 Pers.
|
Verfasst: Mi 07.07.04 22:48
Möglicherweise funktioniert es dann, wenn du t nach einer Umdrehung wieder auf Anfang setzt.
_________________ Linux und OpenSource rulez!
|
|
Larus 
      
Beiträge: 431
|
Verfasst: Di 02.11.04 18:38
Titel: thx
ich werds versuchen.. danke vorerst
|
|
sourcehunter
      
Beiträge: 482
Win XP | Suse 10.1
Delphi 2005 Pers.
|
Verfasst: Mi 03.11.04 10:06
Hast du schonmal probiert die Schleife länger laufen zu lassen?
//Edit: Sry geht nicht, mein Fehler.
_________________ Linux und OpenSource rulez!
|
|