Autor Beitrag
Larus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 431



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 210

Win XP Pro
Delphi 7 PE, D2005 Prof. SSL
BeitragVerfasst: Di 06.07.04 17:37 
Und was möchtest du jetzt von uns? :?:
Larus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 431



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 192

Win XP Home
Turbo Delphi 2006 (Win32), C# (VS 2008 Prof.), Java (Eclipse), PHP
BeitragVerfasst: Di 06.07.04 18:10 
Ich denke, du verstehst es besser, wenn du den JS-Code übersetzt...
Larus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 431



BeitragVerfasst: Di 06.07.04 18:41 
Titel: Witzig...
Haha... :wink: erstens ist der saulang, :!: und zweitens bin ich noch nicht so gut :x 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!
:wink:
MartinPb
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 698



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 482

Win XP | Suse 10.1
Delphi 2005 Pers.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: 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 :wink: Das is wohl nix für zwischen durch, so wie bei dem JavaScript gelöt.


// edit: vielleicht mit GDI+

_________________
mfg.
mâximôv
sourcehunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 482

Win XP | Suse 10.1
Delphi 2005 Pers.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 18

Win XP Prof.
D6 Ent, D7 Ent
BeitragVerfasst: 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:
ausblenden 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:
ausblenden 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 482

Win XP | Suse 10.1
Delphi 2005 Pers.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 18

Win XP Prof.
D6 Ent, D7 Ent
BeitragVerfasst: 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)

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 482

Win XP | Suse 10.1
Delphi 2005 Pers.
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 431



BeitragVerfasst: Di 02.11.04 18:38 
Titel: thx
ich werds versuchen.. danke vorerst
sourcehunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 482

Win XP | Suse 10.1
Delphi 2005 Pers.
BeitragVerfasst: 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!