Laden...

Forenbeiträge von Blacal Ingesamt 387 Beiträge

22.07.2010 - 16:08 Uhr

Also, wir haben:
Metaframe Presentation Server 4.5 Rollup-Package 5.

Wie weiter oben schon beschrieben greife ich mit dem Citrix Online Plugin drauf zu (aktuellste Verison, habe ich erst vor ein paar Tagen installiert).

Gruß

21.07.2010 - 16:01 Uhr

Ok, alles klar.
Dann scheint das an der Citrix-Version zu liegen.

Danke für die Info.

Gruß

21.07.2010 - 11:46 Uhr

Hi,

Ich versuche, eine WPF-Anwendung über einen Citrix-Client zu starten. Als Client dient das Citrix Onlie-Plugin (wird über Internetexplorer gestartet). Auf dem Citrix läuft ein Windows Server 2003 SP1 und .Net Framework Version ist 3.5 SP1.

Problem ist schnell beschrieben: Es geht nicht. Man sieht nur den Rahmen des WPF-Fensters und die komplette Desktop-Umgebung flackert. Innerhalb des WPF-Fensters ist nichts zu sehen.

Ich habe schon versucht, von vorne herein den Software-Render-Modus zu erzwingen:

HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
HwndTarget hwndTarget = hwndSource.CompositionTarget;
hwndTarget.RenderMode = RenderMode.SoftwareOnly;

Hat allerdings auch nichts gebracht.

Eventuell kann mir hier ja jemand helfen.

Gruß

20.07.2010 - 07:19 Uhr

Hi,

ganz einfach: ComboBoxDisplayAndValue benötigt eine ToString Methode, welche den Wert von Display zurück gibt. In der Combobox wird dann genau das ausgegeben, was die ToString-Methode zurück gibt. Um jetzt ein Element vom Code aus zu selektieren, reicht es, die SelectedItem Eingeschaft der ComboBox auf das gewünschte ComboBoxDisplayAndValue Objekt zu setzen. Andersherum kannst du auch über die SelectedItem Eigenschaft auf das aktuell selektierte Objekt zugreifen.

Das hier sind allerdings Grundlagen. Besser ist es, das selber so auszuprobieren, auch, wenns etwas länger dauert.

Gruß

19.07.2010 - 19:48 Uhr

Hi,

kommt drauf an, wie du es anstellen willst. Wenn du richtige jpeg Bilder auf diese Weise transformieren willst, würde ich es nicht über die Standard-Transformationen von System.Drawing machen - das zieht extremst Performance. Für selbst gezeichnete Objekte mit Linien / Texten / ... würde das aber ganz gut funktionieren.

Für Bilder würde ich einen Weg über eine 3D-Schnittstelle gehen. Falls Möglich etwa über die 3D-Fähigkeiten in WPF und diese dann über ein WPF-Control innerhalb des Windows.Forms Fensters nutzen. Eine andere Alternative wäre noch, die DirectX Schnittstelle direkt zu verwenden - erzeugt aber wieder etwas mehr Aufwand.

Gruß

12.07.2010 - 07:38 Uhr

Hi,

ich fasse mich mal kurz: 👍
Echt gute Arbeit bis jetzt. Steckt bestimmt eine Menge Aufwand drin.

Kannst dich ja mal melden, wenn du noch etwas Unterstützung in Sachen Programmierung brauchst. Finde das Projekt sehr interessant.

Gruß

09.07.2010 - 07:40 Uhr

Hi,

Gegenfrage: Wo liegt der Sinn, eine deutsche Anwendung zu haben, wo die Fehlermeldungen auf Englisch kommen? In der Regel sollte es doch so sein, dass die Fehlermeldungen in der Sprache kommen, in der auch die Anwendung läuft.

Gruß

09.07.2010 - 07:21 Uhr

Hi winmike,

ich habs jetzt nicht probiert, kann mir aber auch nicht vorstellen, dass es Probleme gibt, da Problemlos in zwei Assemblys die gleichen Typen mit gleichen Namespace Namen existieren können.

Schau dir dazu mal den Vollständigen Namen eines Typs an: Da ist Assembly-Name und Version auch mit dabei.

Gruß

07.07.2010 - 21:40 Uhr

Jedes Control hat zwar keine Position, aber dafür eine Location ^^
macht aber das Gleiche.

Du programmierst noch nicht wirklich lange, oder?
Das hier würde ich jetzt mal zu den Grundlagen zählen. Probier mal selber rum, vorkauen will ich dir dass jetzt nicht.

Gruß

07.07.2010 - 21:07 Uhr

Hi,

kurze Frage zu deiner Frage: Über welches Binding gehst du?
Über httml, Tcp/ip, ..

Bei einem Http-Binding zum Beispiel könntest du über Fiddler rausbekommen, ob eine Nachricht rausgeht oder nicht.

Gruß

07.07.2010 - 21:02 Uhr

Hi,

wär mir zwar noch nie aufgefallen, aber du kannst vorher die Position deines Controls auf 0,0 setzen und die Größe auf die ClientRectangle Eigenschaft des Ziel-Containers.

Somit gäbe es nach dem Dock.Fill erst einmal keine Größenänderung und du dürftest diesen Effekt nicht mehr haben.

Gruß

07.07.2010 - 16:37 Uhr

Nein, bis jetzt nur dlls.

07.07.2010 - 16:02 Uhr

Läuft bei mir (Vista 32-Bit) ohne Probleme. Auch auf anderen Rechnern mit XP ist mir noch nichts zu Ohren gekommen.

Einzig bei der Setup-Erstellung funktioniert es wohl ab Windows Vista nicht mehr (Wenn man ein Standard Setup-Projekt von VisualStudio verwendet), da muss man dann das Setup entweder auf einen XP Rechner erstellen oder dann eben trotzdem manuell machen. Ich persönlich hab dafür eine Windows XP VM missbraucht.
Auf Windows 7 hab ich aber noch nicht ausprobiert.

Beim erstellten Setup hab ich auch noch keine Probleme gehabt. Registriert die Dlls auf XP, Vista und Windows 7 Rechnern (allerdings sind alle meine COM-Dlls bis jetzt nur 32-Bit gewesen).

Gruß

07.07.2010 - 14:27 Uhr

Hi,

aber was mich jetzt trotzdem noch interessieren würde:
Warum registrierst du die Dll eigentlich manuell? Dafür gibt es doch einen Hacken in den Projekteinstellungen (Für COM sichtbar machen, oder so) - jedenfalls benutze ich den immer.

Gruß

07.07.2010 - 12:47 Uhr

Hi,

also auf den ersten Blick fällt mir schon auf, dass bei ComTestObject die ProgID fehlt:

[ProgId("COMTestObject.COMTestObject")]

Weiß jetzt nicht, ob das notwendig ist, aber ich schreib das eigentlich immer hin.

Hast du schon mal mit dem Tool oleview geschaut, ob dein COM-Objekt auch richtig registriert ist? Das Durchblättern der Typelibrary dort zeigt oft schon, warum es nicht geht.

Gruß

07.07.2010 - 07:20 Uhr

Falls die englische Sprache da irgendwo mit installiert ist, sollte es auch reichen, die aktuelle Culture auf englisch zu stellen

Thread.CurrentCulture = new CultureInfo("en-US")

oder sowas...

hab ich jetzt aber nicht ausprobiert, da ich sowieso nur die englische Version installiert habe.

Gruß

06.07.2010 - 07:14 Uhr

Hi,

feine Sache.
Wusste gar nicht, dass man das so hin biegen kann, dass das geht.

Gruß

03.07.2010 - 05:47 Uhr

Hi,

schreib doch irgendwo aufs Filesystem (nutze dafür Environment.GetPath) eine Datei mit deiner aktuellen Assembly-Version. Ist diese höher (nach einem neuen Setup / Update), dann gib deine MessageBox aus und schreib die aktuelle Versionsnummer wieder rein.

Alternativ gibts dann noch Registry und noch jede Menge anderer Möglichkeiten

Gruß

02.07.2010 - 07:38 Uhr

Hi M.Holder,

schau mal nach, ob der richtige DataContext gesetzt ist. Wäre die erste Stelle, an der ich mal nachschauen würde.

Gruß

01.07.2010 - 08:56 Uhr

Sehr gut, dann weiß ich auch mal genau, für was diese Eigenschaft da ist ^^

01.07.2010 - 07:35 Uhr

Ein Beispiel eines DataTemplates findest du schon weiter oben in dem Link, den ich gepostet habe. Einträge erzeugen geht am einfachsten, in dem du der ItemSource Eigenschaft eine Liste mit Objekten zuweist.

... Aber das sind dann eher Grundlagen. Wie TomLeech hier eins weiter oben schon schreibt: Googlen bringt dich da schneller zum Ergebnis als eine Frage hier. Und bei Msdn gibts auch unzählige Artikel und Beispiele drüber, wie man so etwas macht.

Gruß

01.07.2010 - 07:18 Uhr

Hi

ich habs jetzt nicht probiert, aber bei den GeometryModel3D Objekten kann man neben dem Material auch ein BackMaterial oder sowas festlegen. Eventuell genügt es ja, diesen einfach bloß zu setzen.
Ein Flag "CullMode" oder ähnliches wär mir jetzt zumindest spontan nicht bekannt.

Edit: Was mir gerade noch so auffällt: Du solltest die 3D-Features von WPF nicht mit dem "älteren DirectX Wrapper" vergleichen. WPF liegt eine Ebene weiter oben und lässt dir nur Objekte definieren und in einer Szene platzieren. Tiefere Änderungen wie andere Renderreihenfolge, komplexe 3D-Effekte usw. sind über WPF nicht oder nur sehr eingeschränkt möglich.

Gruß

30.06.2010 - 09:11 Uhr

An deiner Stelle würde ich an die Klasse MyFoo<T> einfach eine Bedingung anfügen, dass nur Referenztypen erlaubt sind.

Also so:


public class MyFoo<T>
    where T : class

Ein Nullable für einen Referenztyp macht keinen Sinn, da ja ein Referenztyp im Prinzip schon Nullable (= erlaubt Null-Wert) ist.

Gruß

30.06.2010 - 07:15 Uhr

Hi

die ItemTemplate Eigenschaft setzen (mit einem DataTemplate).
Link auf msdn

Gruß

29.06.2010 - 12:30 Uhr

Hi,

... oder du fügst einfach diese paar Zeilen ziemlich am Ende der .csproj Datei ein
(Bei mir kommt danach nur noch ein <PropertyGroup> Tag):

  <Target Name="GenerateSerializationAssembliesForAllTypes" DependsOnTargets="AssignTargetPaths;Compile;ResolveKeySource" Inputs="$(MSBuildAllProjects);@(IntermediateAssembly)" Outputs="$(OutputPath)$(_SGenDllName)">
    <SGen BuildAssemblyName="$(TargetFileName)" BuildAssemblyPath="$(OutputPath)" References="@(ReferencePath)" ShouldGenerateSerializer="true" UseProxyTypes="false" KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)" DelaySign="$(DelaySign)" ToolPath="$(SGenToolPath)">
      <Output TaskParameter="SerializationAssembly" ItemName="SerializationAssembly" />
    </SGen>
  </Target>
  <Target Name="AfterBuild" DependsOnTargets="GenerateSerializationAssembliesForAllTypes" />

Danach wird nach jedem erstellen auch die Datei DeinProjekt.XmlSerializers.dll erzeugt.

Gruß

29.06.2010 - 07:49 Uhr

Nur für WPF und Windows.Forms, sorry.
Aber die habe ich allesamt auf Codeplex gefunden und funktionieren sehr gut.

29.06.2010 - 07:48 Uhr

Hi,

meines Wissens funktioniert so etwas mit xsd nicht.
Du müsstest eigentlich alles außer DataType und InputType optional machen und sinnvolle Standardwerte im Code definieren - oder halt beim Laden der xml selber prüfen.

Gruß

29.06.2010 - 07:24 Uhr

Hi,

der Link von dir führt zu einem WPF-Ribbon, das kann man aber nicht in Silverlight verwenden. Schau mal auf www.codeplex.com, da findet sich mit Sicherheit was in der Richtung.

Gruß

28.06.2010 - 21:15 Uhr

Hi,

versuch mal deine Anwendung vorher komplett neu zu erstellen (eventuell auch vorher die Projektmappe bereinigen). Das hilft bei solchen Problemen meistens.

Gruß

28.06.2010 - 21:13 Uhr

Hi Beatsteak,

ich kann dir zwar jetzt auf die schnelle keinen Code dazu bereitstellen, aber deine Klassen müssen nicht all Serialisierbar sein, damit du sie in eine andere AppDomain auslagern kannst. Einzig die Objekte, mit denen du zwischen den AppDomains kommunizierst.

Ich hab sowas vor 3 Jahren einmal umgesetzt, und kann mich jetzt auch nicht mehr an jedes Detail erinnern. Das Prody-Objekt selbst ist meines wissen relativ dumm, es enthält lediglich ein Interface als Member. Über das Interface wird auf das externe Modul zugegriffen (und das dahinterstehende Objekte ist in der anderen AppDomain). Zusätzlich habe ich immer einen eigenen Thread in der anderen AppDomain laufen lasse - ist aber kein muss, glaube ich.

Aber mal eine andere Frage: Du sagst, du willst das machen, weil du sonst Probleme mit COM Komponenten hast? Meines Wissens dürfte es für COM keine AppDomain Grenzen geben, daher wird dir eine eigene AppDomain unter Umständen nicht einmal was bringen.

Gruß

28.06.2010 - 18:31 Uhr

Hi,

kannst du da etwas mehr dazu sagen? Folgende Punkte wären hilfreich:
*Gibt es eine Fehlermeldung? *Welche Grafikkarte hast du? *Funktionieren andere 3D-Anwendungen?

Bei den Rechnern, an denen ich das Spiel getestet habe, funktionierte alles einwandfrei.

Gruß

28.06.2010 - 12:58 Uhr

Hi,

aktuell setze ich SQLite auch in einem kleineren Programm ein. Ich verwende auch System.Data.SQLite, allerdings im Verbund mit dem EntityFramework - so lässt sich alles auch sehr flink und übersichtlich programmieren. Hier ein Artikel dazu. Von der Performance her reicht es mir auf diesen Weg auch, aber das kommt dann auch auf dein Programm an.

Gruß

28.06.2010 - 12:42 Uhr

Ja, WebGL ist eine sehr interessante Sache, da könnte man sich eigentlich sogar die C#-Implementierung sparen und alles direkt in JavaScript machen. Das man so einen Umweg über C# machen kann, wie hier beschrieben, finde ich jetzt eine etwas kuriose Idee. Aber cool, dass sowas funktioniert.

Aber noch bin ich selbst etwas skeptisch, was diese quasi Standards angeht. Die Frage ist, ob sich das auch allgemein durchsetzt. Alle außer Microsoft wollen ja WebGL unterstützen (oder tun es sogar bereits?).

Aber sicher mal ein interessantes Zeugs zum rumspielen. Aber noch einmal Snake nur auf einer anderen Platform wär ja langweilig.

Gruß

28.06.2010 - 07:19 Uhr

Hi,

naja, genau so wird mans in Silverlight nur schwer hinkriegen, oder? Silverlight unterstützt ja kein 3D. Den einzigen Weg, den ich jetzt kenn, wäre Kit3D. Ist aber Performancemäßig eher schlechter, weils keine Hardwarebeschleunigung nutzen kann.

Im Großen und Ganzen war das Ziel für mich ja nicht, ein geiles Snake zu machen (gibts ja sowieso schon tausende), sondern mehr, um mit xbaps Erfahrungen zu sammeln.

Gruß

27.06.2010 - 11:53 Uhr

Hi,

ich möchte hier mal kurz mein aktuelles kleines Experiment vorstellen. Es handelt sich um einen Snake-Clon in 3D-Grafik, welcher vollständig im Browser ausgeführt wird. Basis der ganzen Geschichte ist eine WPF-Browseranwendung mit .Net 3.5 SP1 - was leider auch den Nachteil mit sich bringt, dass das Spiel nur im Internetexplorer läuft.

hier der Link zum Spiel (und weiter unten im Beitrag ein Screenshot) - wie gesagt, kann nur mit Internetexplorer gestartet werden.

Das Spiel lässt sich einfach über die Pfeiltasten oder per WASD bedienen. Die Regeln sind wie allgemein bei Snake-Spielen: Bei jedem gesammelten Punkt wird der Wum auch um 1 länger. Frisst der Wurm sich selbst oder verlässt er das Spielfeld, ist das Spiel vorbei. Nach jedem Spiel kann sich der Spieler schließlich in eine Highscore eintragen, welche in eine Datei lokal am Rechner (über IsolatedStorage) gespeichert ist.

Viel Spaß beim Ausprobieren 😃

Gruß

26.06.2010 - 16:41 Uhr

Hi Campy,

ich muss gestehen, ich habe es selber noch nie Probiert. Aber angeblich kann man dem AddIn-Framework sagen, dass es ein AddIn in einen anderen Prozess auslagern soll. Rein theoretisch sollte es dann Möglich sein, dass dieser Prozess dann eine andere Prozessorarchitektur nutzt.

Alternative wäre, diese Komponenten händisch in einen anderen Prozess auszulagern und die Kommunikation selbst zu programmieren (z. B. mit WCF oder ähnlichen Technologieen).

Gruß

26.06.2010 - 16:04 Uhr

Hi,

ich entwickle gerade ein kleines Game "AvalonSnake", um die Fähigkeiten von WPF 3D kennen zu lernen. Im Grunde handelt es sich dabei um eine kleine WPF Browser Anwendung mit ein paar 3D-Objekten drinne - nix weltbewegendes. Generell funktioniert das auch recht gut, aber ein kleines Problem habe ich:

Ich will die xbap Datei in eine "index.htm" Datei einbetten, damit man diese im Pfad oben im Browser nicht zwingend mit eintippen muss. Sieht auch nicht so schön aus, finde ich. Die html-Datei sieht so aus:

<html>
  <head>
    <title>www.rkoenig.eu - AvalonSnake</title>
  </head>
  <frameset>
    <frame src="AvalonSnake.BrowserHost.xbap" />
  </frameset>
</html>

Beim Ergebnis wird irgendwo eine zusätzliche Navigationsleiste hinzugefügt, die in meinen Augen sehr störend wirkt. Einen kleinen Screenshot davon habe ich angehängt.

Und hier zum Vergleich (funktioniert leider nur mit InternetExplorer und installiertem .Net Framework 3.5 SP1):

Url zu Html-Datei
Url zu xbap Datei

Weiß hier jemand, wie man diese Leiste ausblenden kann?

Gruß

25.06.2010 - 07:36 Uhr

Hi Schamese,

gleich mal ein großes Lob von mir. Neulich hab ich erst nach eine Art Xml-Serialisierer gesucht, welcher kein Reflection verwendet. Und zusätzlich fällt auch das Problem weg, das einzelne Objekte aufgrund mehrerer Referenzen auch mehrfach serialisiert werden.

Nachteil, den ich jetzt sehe, ist, dass man viel auf Xml-Schicht selber programmieren muss (Methoden LoadProperties und SaveProperties). Aber gut, ich denk mal, da würde man nicht drum rum kommen, ohne Reflection zu verwenden.

Gruß

25.06.2010 - 07:24 Uhr

Hi,

vor zwei Jahren habe ich auch mal versucht, einen Editor mit Syntax-Highlighting zu machen. Ich weiß nicht mehr genau, was die Probleme waren, aber ich hab da Undo-Redo nicht mehr hinbekommen (ich glaube, dass hätte dann zu viel Zeit benötigt). Auf jedenfall ist es nicht ohne weiteres über den Standard realisierbar.

Hier eine Alternative, die ich jetzt auch verwende: Eigener Code-Editor

Gruß

24.06.2010 - 12:41 Uhr

Hi,

das zu lösen ist nicht einfach, glaube ich.
Du musst also die 32- oder die 64-Bit dlls (je nachdem, als was deine Hauptanwendung läuft) in einen anderen Prozess auslagern. Ob man mit dem MEF bestimmte Module in andere Prozesse auslagern kann, weiß ich nicht. Aber mit System.AddIn sollte das gehen, schau dir das mal an.

Gruß

22.06.2010 - 18:11 Uhr

Hi,

stimmt, das ist ein sehr seltsames Verhalten.
Würde mich auch interessieren, ob das so Absicht ist, oder ob es sich um ein Fehlverhalten vom Framework handelt.

Gruß

22.06.2010 - 08:03 Uhr

Hi,

dein Problem kommt daher, weil der DataTrigger die Werte nur setzt, wenn die Eigenschaft den angegebenen Wert erhält. Zurückgesetzt wird nach einer weiteren Änderung nichts mehr.

Ich würde an deiner Stelle einen boolean machen, so eine Art IsDisplayBrushSet, oder besser IsLoading. Darauf kannst du dann zwei DataTrigger machen: Einen für den Fall, dass die Eigenschaft true ist und einen für false.

Gruß

20.06.2010 - 11:46 Uhr

Hallo zusammen,

ich habe hier auf meinem Desktop-Rechner (Win 7 64-Bit, .Net 3.5 SP1) ein seltsames Problem. Bei manchen Konstellationen von FontSize und FontFamily bleibt die WPF-Anwendung hängen, sobald der Text dargestellt werden soll.

Ein kurzes Beispiel:
Das hier geht: FontSize="50" FontFamily="Arial"
Das hier geht nicht: FontSize="60" FontFamily="Arial"

Auf welchem Element ist dabei eigentlich egal. Habs jetzt auf Buttons, MenuItems und Labels probiert, scheint also allgemein was mit den Schriftarten bei mir zu tun zu haben.

Meine Frage ist jetzt, ob jemand weiß, was man gegen so ein Problem machen kann. Bin da grad etwas ratlos, wo ich da etwas tun kann, zumal auf meinem Laptop (Vista x86, .Net 3.5 SP1) alles problemlos läuft.

Gruß

18.06.2010 - 20:07 Uhr

Hi TBR,

Was mich auch interessieren würde, wie man z.B. für Windows Vista/7 ein Spiel in den "My Games" Ordner registrieren kann 😉

Im DirectX SDK gibt es Methoden, mit denen man mit dem Spieleexplorer und dem Zeugs interagieren kann. Ich denk mal da findest du, was du brauchst. Sind aber C++ APIs... weiß nicht, ob es dafür einen Wrapper gibt (eventuell hat das ja SlimDX mit drin?).

Gruß

18.06.2010 - 07:26 Uhr

Hi Locutus,

soweit ich das hier verstehe, ist das in etwa das, was das System.Threading.WaitHandle macht. Der Thread wird ja Blockiert, wenn du WaitForSingleObject aufrufst, oder? Was anderes macht ja WaitHandle.WaitOne auch nicht.

So wie ich das verstehe, musst du in einem Hintergrundthread einfach dieses WaitForSingleObject aufrufen. Sobald der Thread nach dieser Methode einen Schritt weiter geht, wurde ja das Event gefeuert, oder? Danach musst du, je nach dem was die Rückgabe von GetStatus dir sagt, auf das Ereignis reagieren.

Hoffe, das hilft dir weiter.

Gruß

13.06.2010 - 14:46 Uhr

Was mir jetzt noch auf den ersten Blick auffällt:
Bei device.Clear übergibts du nur ClearFlags.Target. Du sagst dem Device also, dass es nur die Farbwerte auf deiner Textur oder halt am Rendertarget löschen soll. Du musst hier zusätzlich noch ClearFlags.ZBuffer (ich denk mal, dass der member ZBuffer heißt) angeben, damit auch der ZBuffer zurückgesetzt wird.

Gruß

11.06.2010 - 10:03 Uhr

hm... seltsam.
Sollte eigentlich keinen Unterschied machen, ob jetzt aufs RenderTarget oder auf eine Textur gerendert wird.

Du hast es schon so probiert, oder?


this.device.SetRenderTarget(0, this.renderTexture.GetSurfaceLevel(0));

[ZBuffer deaktivieren]
this.device.VertexFormat = CustomVertex.TransformedTextured.Format;
this.device.DrawUserPrimitives(PrimitiveType.TriangleStrip, 2, this.vertices);
[ZBuffer aktivieren]

this.device.VertexFormat = CustomVertex.PositionTextured.Format;
this.mesh.DrawSubset(0);

Gruß

10.06.2010 - 09:26 Uhr

Hi cgimda,

ohne das jetzt getestet zu haben:
Deaktiviere mal den ZBuffer, solange du das TransformedTextured zeichnest (machst du mit dem RenderState ZWriteEnable, oder irgendwie so ähnlich heißt das). Einfach vor dem Draw-Aufruf auf false und danach wieder auf true setzen.

Gruß

08.06.2010 - 19:42 Uhr

Ne, den gleichen Eindruck habe ich auch.
Aber gut, dafür findet man genügend in die Richtung: http://www.codegod.de/WebAppCodeGod/wpf-3d-animations-and-textures-AID439.aspx

Vorteil, den ich sehe, ist die nahtlose Integration in die restliche Gui (wenn man WPF verwendet). Kriegt man zwar mit XNA oder SlimDX auch hin, aber da wirds dann schon wieder etwas aufwendiger.

08.06.2010 - 19:23 Uhr

Hi,

was natürlich auch interessant ist, sind die 3D Fähigkeiten von WPF. Wenn deine 3D Szenen nicht extrem aufwändig werden, kann das eine recht einfache und schlanke Alternative sein. Bin selbst gerade dabei, mir das anzuschauen. Ist eigentlich ganz interessant.

Hier mal einer von vielen Links dazu:
http://www.wpftutorial.net/IntroductionTo3D.html

Gruß