Jump to content
  • 0
Melde dich an, um diesem Inhalt zu folgen  

C# Wpf 3D Zeichnung als Bild Datei erstellen

Frage

Hallo Zusammen,

ich arbeite schon seid längeren an einem Projekt, in dem erstelle ich 3D Zeichnungen mit System.Windows.Media.Media3D. Diese Zeichnung besteht aus vielen LinesVisual3D Linien, die Zusammen ein Rechteck bilden. In diesem Rechteck sind viele kleine GeometryModel3D Rechtecke die dann farbig sind. LinesVisual3D und GeometryModel3D werden in ModelVisual3D eingefügt und dann angezeigt, sodass man das Rechteck bewegen kann.

Dass zu der Hintergrund Geschichte, mein Problem das ich jetzt habe ist, dass ich nun die Zeichnung die ich erstelle als eine Bild Datei abspeichern möchte, damit auch andere Programme mit der Zeichnung etwas anfangen können. Doch ich habe im Internet noch keine Möglichkeit gefunden eine 3D Zeichnung von Media3D in eine Datei umzuwandeln. Kann mir vielleicht jemand helfen? ( Falls das jetzt verständlich war was ich geschrieben habe)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

11 Antworten auf diese Frage

Empfohlene Beiträge

  • 0

Was auch wohl so nicht gedacht ist. Der Media3D-Namespace beinhaltet nur Klassen und Methoden zur Darstellung von 3D-Präsentationen. Da musst du dir schon selber was einfallen lassen, wie du daraus eine Datei machst. Sprich, du musst selber einen Generator bauen, der aus deiner Darstellung eine Datei erzeugt oder wie man es eigentlich machen würde: Eine Abstraktion, aus der sowohl deine Grafik als auch die Datei erzeugt wird.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0

Du müsstest dich zuerst mal damit befassen, wie überhaupt die Dateien aufgebaut sind, die du speichern möchtest. Als Beispiel nehme ich mal dafür das SVG-Format. Im Grunde ist eine SVG-Format nichts weiter als eine XML-Struktur und eine XML-Struktur ist ein Baum.

Ein Beispiel aus Wikipedia:

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg"
	version="1.1" baseProfile="full"
	width="700px" height="400px" viewBox="0 0 700 400">

	<!-- Anschlüsse links und rechts -->
	<line x1="0" y1="200" x2="700" y2="200" stroke="black" stroke-width="20px"/>
	<!-- Das Rechteck -->
	<rect x="100" y="100" width="500" height="200" fill="white" stroke="black" stroke-width="20px"/>
	<!-- Der Schleifer -->
	<line x1="180" y1="370" x2="500" y2="50" stroke="black" stroke-width="15px"/>
	<!-- Die Pfeilspitze -->
	<polygon points="585 0 525 25 585 50" transform="rotate(135 525 25)"/>
</svg>

Eine SVG-Datei kann dann von einem XML-Parser eingelesen werden und erzeugt daraus ein Baum.

svg
    width  = "700px"
    height = "400px"
    line
        x1     = 0
        y1     = 200
        x2     = 700
        y2     = 200
        stroke = "black"
        ...
    rect
        ...
    line
        ...
    polygon
        ...

Die GUI (z.B. der Browser) durchläuft dann diesen Baum und je nach Knotenart (line, rect, polygon, ...) erzeugt er dann die geometrische Figur. Wenn man jetzt den Baum manipuliert, indem man z.B. einen weiteren Knoten hinzufügt, dann wird der Baum wieder durchlaufen und die neue Grafik wird erzeugt. Im einfachsten Fall hast du dann für line, rect, polygon, ... einzelne Klassen:

if(knotenart == "line")
    new Line(...)
else if(knotenart == "rect")
    new Rect(...)
else if(knotenart == "polygon")
    new Polygon(...)
...

Und die Klassen rendern dir später deine Grafiken auf dem Bildschirm und aus dem Baum lässt sich dann später wieder eine SVG-Datei generieren.

bearbeitet von Whiz-zarD

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0

Hallo Zusammen,

ich gestern schon ein bisschen weiter gekommen, mein Aktueller Code sieht jetzt so aus:

Unbenannt.PNG.55383133ede724c098247f143252b7b1.PNG

 

Ich bekomme zwar eine Datei, aber diese Datei ist komplett schwarz, man sieht das leider nicht meine Zeichnung und ich weis nicht warum. Hat hier jemand vielleicht eine Idee?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0

Achso, als Rastergrafik möchtest du es speichern und als 3D Model. Dann hab ich dich dann falsch verstanden.

Da kenne ich mich jetzt auch nicht so besonders gut aus und die Codebeispiele, die ich finde, sind genau das selbe, was du geschrieben hast.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0

mfk'); DROP TABLE Users;- , daran hab ich auch gedacht, doch er bring mir immer ein Fehler Meldung und ich weis nicht woran das liegt:

Unbenannt2.PNG.203aa54476e4f1ec4693463bdcf3ec1d.PNG

Da wo es Gelb markiert ist taucht die Fehlermeldung auf. (System.NullReferenceException: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."). dblLKWlänge = 13,2 ; dblLKWbreite = 2,4.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0

Ich bin ein wenig verwirrt: Ist myviewport3d in deinem Code ein System.Windows.Controls.Viewport3D oder ein HelixToolkit.Wpf.HelixViewport3D?

Im letzteren Fall musst du wohl nicht die Kamera einrichten, aber ein Licht solltest du hinzufügen. Zumindest ist das mein Eindruck beim Überfliegen der Beispiele.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0

Okay, ich habe einen Hinweis und zwar fehlt bei meinem HelixViewport3D eine Einstellung die das Bild Zeichnet. Wenn man das HelixViewport3D von der Toolbox auf das MainWindow zieht hat das HelixViewport3D Standarteinstellungen wo das Bild gezeichnet wird und ich bekomme in meiner Datei dann auch ein Bild ( Habe zum Testen einfach ein HelixViewport3D in mein MainWindow gezogen und das dann mit meiner Variabel myviewport3D gleichgesetzt und dann hats Funktioniert). Kann mir einer sagen was für eine Einstellung ich vergessen habe?

Unbenannt3.PNG.9652929c51506af340794a0461e7d9c6.PNG

Hier sind alle Einstellungen die ich gemacht habe.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Melde dich an, um diesem Inhalt zu folgen  

Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung