Autor Beitrag
C#Leon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Do 19.06.14 11:56 
Hallo Zusammen
Ich habe ein Programm geschrieben auf meinem Computer (Windows 7 Enterprise 64Bit) in Visual Studio 2012 Prof, dieses Programm funktionierte auf allen Computern Win7 64bit Enterprise und auch auf einem Win8 32bit Tablet.
Das GUI ist in XAML erstellt worden. Der Rest des Codes in C#.Es wurde ein Würfel mit 6 Farben dargestellt, den man auf den 3 Hauptachsen rotieren lassen konnte.

Das Programm wurde leicht angepasst anstatt Farben wurde der Würfel mit Bildern bestückt. Der Pfad der Bilder ist folgender:
C:\Users\username\Pictures\IPA\MenschimBuero\1.jpg
Doch das Grundgerüst blieb das gleiche, doch jetzt funktioniert das Programm nur auf meinem Computer auf allen andern Computern und Tablets funktioniert nichts mehr. Ich kann das Programm nicht mehr via exe starten. Ich weiss aber nicht warum wenn mir jemand sagen könnte warum wäre ich euch sehr Dankbar. Aber es sollte auch auf einem Tablet funktionieren.
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
/* Datei                : MainWindow.xaml.cs
    *Programmierer      : *******
    *Firma              : *******
    *Version            : 0.1  
    *Start Datum        : *******
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Media.Media3D;
using Cube3DLib;

namespace Cube3D
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
         
        public MainWindow()
        {
            InitializeComponent();
      

          
        }

      Cube cube1;
      int PN = 0;
      int groesse = 5;
     
       private void Button_Click_8(object sender, RoutedEventArgs e)
       {
           //remove angzeigter Würfel
           Cube_Port.Children.Remove(cube1);
           //projekt drei erstellung wüfel
           cube1 = new Cube3DLib.Cube(new Point3D(000), @"C:\Users\hagger\Pictures\IPA\MenschimBüro");
           // Wo der Würfel angezigt werden soll.
           Cube_Port.Children.Add(cube1);
           PN = 1;
       }
        

        private void Button_Click_6(object sender, RoutedEventArgs e)
        {
            //remove angezeiter würfel
            Cube_Port.Children.Remove(cube1);
            // Projekt eins erstellung wüfel
            cube1 = new Cube3DLib.Cube(new Point3D(000), @"C:\Users\hagger\Pictures\IPA\vercicle");
            // Wo der Würfel angezigt werden soll.
            Cube_Port.Children.Add(cube1);
            PN = 2;
            
        }

        private void Button_Click_7(object sender, RoutedEventArgs e)
        {
            // remove angezeigter würfel
            Cube_Port.Children.Remove(cube1);
            //projekt 2 Erstellung würfel
            cube1 = new Cube3DLib.Cube(new Point3D(000), @"C:\Users\hagger\Pictures\IPA\DynamicsHumaKnee");
            // Wo der Würfel angezigt werden soll.
            Cube_Port.Children.Add(cube1);
            PN = 3;
        }

               
        // Aufruf der Funktion RotateY via Knopf Y-Achse
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            
            cube1.RotateY();
            Textbox2.Clear();
        }

        // Aufruf der Funktion RotateY via Knopf Z-Achse
        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            cube1.RotateZ();
            Textbox2.Clear();
        }
        // Aufruf der Funktion RotateY via Knopf X-Achse
        private void RepeatButton_Click_1(object sender, RoutedEventArgs e)
        {
            cube1.RotateX();
            Textbox2.Clear();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            //Help Anzeige
            Textbox.Text = "Willommen wählen sie einer der 3 Würfel. Um den Würfel aud der X, Y oder Z Achse rotieren zu lassen halten sie den Knopf gedrückt. Alle anderen Funktionen können gestaretet werden wenn sie einmal auf den Knopf drücken..";
            Textbox2.Clear();
        }

        //Reset Knopf Galierie1
        private void Button_Click_3(object sender, RoutedEventArgs e)
        {
            switch (PN)
            {
                    case 1:
                    
                    Cube_Port.Children.Remove(cube1);
                    cube1 = new Cube3DLib.Cube(new Point3D(000), @"C:\Users\hagger\Pictures\IPA\MenschimBüro");
                    Cube_Port.Children.Add(cube1);
                    PN = 1;
                    break;

                    case 2:
                 
                    Cube_Port.Children.Remove(cube1);
                    cube1 = new Cube3DLib.Cube(new Point3D(000), @"C:\Users\hagger\Pictures\IPA\vercicle");
                    Cube_Port.Children.Add(cube1);
                    PN = 2;
                    break;

                    case 3:
                    
                    Cube_Port.Children.Remove(cube1);
                    cube1 = new Cube3DLib.Cube(new Point3D(000), @"C:\Users\hagger\Pictures\IPA\DynamicsHumaKnee");
                    Cube_Port.Children.Add(cube1);
                    PN = 3;
                    break;

                    default:

                    Textbox2.Text = " Es muss ein Würfel dargestllt werden um ihn in die Ausgangspostion zu setzen.";
                    break;

            }

        }

        private void Button_Click_4(object sender, RoutedEventArgs e)
        {
           
            //würfel in die Ausbelnden
            Cube_Port.Children.Remove(cube1);
            Textbox2.Clear();
            
              

        }
        //wüfel einbelnden
        private void Button_Click_5(object sender, RoutedEventArgs e)
        {
            try { Cube_Port.Children.Add(cube1); }

            catch (ArgumentException)
            {
                Textbox2.Text = "Nicht mehr als ein Würfel!";
            }
            
           
        }

        // Würdel verkleinern 
        private void Button_Click_9(object sender, RoutedEventArgs e)
        {
            Textbox2.Clear();
            string gr = Convert.ToString(groesse);
        }

        //Würdel vergrössern
        private void Button_Click_10(object sender, RoutedEventArgs e)
        {
            Textbox2.Clear();
            Textbox2.Text = "Diese Funktion funktioniert noch nicht";
        }

        private void Textbox2_TextChanged(object sender, TextChangedEventArgs e)
        {

        }
   
       
    }
}




ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
/* Datei                : Cube.cs
    *Programmierer      : ******
    *Firma              : ******
    *Version            : 0.1  
    *Start Datum        : ******
 */


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Media.Media3D;
using System.Windows.Media;
using System.Windows;
using System.Windows.Media.Imaging;
using System.IO;

namespace Cube3DLib
{
    public class Cube : ModelVisual3D
    {
        Model3DGroup meshGroup;
        RotateTransform3D myXRotateTransform3D;
        RotateTransform3D myYRotateTransform3D;
        RotateTransform3D myZRotateTransform3D;
        
        // Roation X Achse
        AxisAngleRotation3D myXAxisAngleRotation3d;
        //Roation Y Achse
        AxisAngleRotation3D myYAxisAngleRotation3d;
        // Roation Z Achse
        AxisAngleRotation3D myZAxisAngleRotation3d;
       //Zentrum des 3D Objektes
        Point3D center;

        public Cube(Point3D center, string imagePath)
        {
            // Erstellung erstets 3D Obejekt 
            Name = "cube1";
            meshGroup = new Model3DGroup();
            this.center = center;
            CreateCube(imagePath);

            // Roation um X Achse
            myXRotateTransform3D = new RotateTransform3D();
            myXAxisAngleRotation3d = new AxisAngleRotation3D();
            myXAxisAngleRotation3d.Angle = 40;
            myXRotateTransform3D.Rotation = myXAxisAngleRotation3d;

            // Roation Un Y Achse
            myYRotateTransform3D = new RotateTransform3D();
            myYAxisAngleRotation3d = new AxisAngleRotation3D();
            myYAxisAngleRotation3d.Angle = 0;
            myYRotateTransform3D.Rotation = myYAxisAngleRotation3d;

            // Roation um Z Achse
            myZRotateTransform3D = new RotateTransform3D();
            myZAxisAngleRotation3d = new AxisAngleRotation3D();
            myZAxisAngleRotation3d.Angle = 0;
            myZRotateTransform3D.Rotation = myZAxisAngleRotation3d;

            // Grupireung der Roation um sauberer Derhung zu erhalten
            Transform3DGroup rotate = new Transform3DGroup();
            rotate.Children.Add(myXRotateTransform3D);
            rotate.Children.Add(myYRotateTransform3D);
            rotate.Children.Add(myZRotateTransform3D);
            
            meshGroup.Transform = rotate;

        }

 
        //X Roatation  
        public void RotateX()
        {
            // Angabe auf welcher Achse der würfel rotiert
            myXAxisAngleRotation3d.Axis = new Vector3D(030);
            // Angabe um wie viel grad und auf welche Seite der Würfel drehen soll.
            myXAxisAngleRotation3d.Angle = myXAxisAngleRotation3d.Angle + 15;
        }


        //Y Rotation 
        public void RotateY()
        {
            // Angabe auf welcher Achse der würfel rotiert
            myYAxisAngleRotation3d.Axis = new Vector3D(300);
            // Angabe um wie viel grad und auf welche Seite der Würfel drehen soll.
            myYAxisAngleRotation3d.Angle = myYAxisAngleRotation3d.Angle + 15;
        }

        //Z Rotation
        public void RotateZ()
        {
            // Angabe auf welcher Achse der würfel rotiert
            myZAxisAngleRotation3d.Axis = new Vector3D(003);
            // Angabe um wie viel grad und auf welche Seite der Würfel drehen soll.
            myZAxisAngleRotation3d.Angle = myZAxisAngleRotation3d.Angle + 15;
       }
        
       
        public string Name { get; set; }

        //Wuerfel erstllung
        private void CreateCube(string imagePath)
        {
            // Punkte im Kordianten system definierung jeder Punkt hat eien X;Y und Z Korinate.
            Point3D a = new Point3D(center.X - 1, center.Y - 1, center.Z + 1); 
            Point3D b = new Point3D(center.X + 1, center.Y - 1, center.Z + 1); 
            Point3D c = new Point3D(center.X + 1, center.Y + 1, center.Z + 1); 
            Point3D d = new Point3D(center.X - 1, center.Y + 1, center.Z + 1); 
            Point3D e = new Point3D(center.X + 1, center.Y - 1, center.Z - 1); 
            Point3D f = new Point3D(center.X - 1, center.Y - 1, center.Z - 1);
            Point3D g = new Point3D(center.X - 1, center.Y + 1, center.Z - 1); 
            Point3D h = new Point3D(center.X + 1, center.Y + 1, center.Z - 1);

            //Erstellung der Seite1 mit Bild1 //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            GeometryModel3D front = new GeometryModel3D(BuildRectangle(a, b, c, d, new Vector3D(00, +1)), new DiffuseMaterial(new ImageBrush(new BitmapImage(
               new Uri(Path.Combine(imagePath, "1.jpg"), UriKind.Absolute)))));

            //Rückseite der Seite1 mit Bild 1 bestückt //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            front.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "1.jpg"), UriKind.Absolute))));

            //Ertsellung der Seite2 mit Bild2 //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            GeometryModel3D back = new GeometryModel3D(BuildRectangle(e, f, g, h, new Vector3D(00, -1)), new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "2.Jpg"), UriKind.Absolute)))));

            //Rückseite der Seite2 mit Bild2 bestückt //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            back.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "2.jpg"), UriKind.Absolute))));

            //Erstellung der Seite3 mit Bild3 //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            GeometryModel3D right = new GeometryModel3D(BuildRectangle(b, e, h, c, new Vector3D(100)), new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "3.jpg"), UriKind.Absolute)))));

            //Rückseite der Seite3 mit Bild3 der bestückt //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            right.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "3.jpg"), UriKind.Absolute))));

            //Erstellung der Seite4 mit Bild4 //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            GeometryModel3D left = new GeometryModel3D(BuildRectangle(f, a, d, g, new Vector3D(-100)), new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "4.jpg"), UriKind.Absolute)))));

            //Rückseite der Seite4 mit Bild4 der bestückt //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            left.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "4.jpg"), UriKind.Absolute))));

            //Erstellung der Seite5 mit Bild5 //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            GeometryModel3D bottom = new GeometryModel3D(BuildRectangle(e, b, a, f, new Vector3D(0, -10)), new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "5.jpg"), UriKind.Absolute)))));

            //Rückseite der Seite5 mit Bild5 bestückt //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            bottom.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "5.jpg"), UriKind.Absolute))));

            //Erstellung der Seite6 mit Bild6 //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            GeometryModel3D top = new GeometryModel3D(BuildRectangle(d, c, h, g, new Vector3D(010)), new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "6.jpg"), UriKind.Absolute)))));

            //Rückseite der Seite6 mit Bild6 bestückt //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            top.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "6.jpg"), UriKind.Absolute))));
                    
            // Seite für den betrachter definierung
            meshGroup.Children.Add(front);
            meshGroup.Children.Add(back);
            meshGroup.Children.Add(right);
            meshGroup.Children.Add(left);
            meshGroup.Children.Add(bottom);
            meshGroup.Children.Add(top);

            this.Content = meshGroup;
        }
        

        // Dreieckerstellung
        private MeshGeometry3D BuildRectangle(Point3D a, Point3D b, Point3D c, Point3D d, Vector3D normal)
        {
            MeshGeometry3D geometry = new MeshGeometry3D();
            int baseIndex = geometry.Positions.Count;

            geometry.Positions.Add(a);
            geometry.Positions.Add(b);
            geometry.Positions.Add(c);
            geometry.Positions.Add(d);

            // Farbverlauf falls erwuenscht es muessten 2 Farben vorhanden sein
     
            geometry.TextureCoordinates.Add(new Point(01));
            geometry.TextureCoordinates.Add(new Point(11));
            geometry.TextureCoordinates.Add(new Point(10));
            geometry.TextureCoordinates.Add(new Point(00));

            // Nomrlaverbindung 
            geometry.Normals.Add(normal);
            geometry.Normals.Add(normal);
            geometry.Normals.Add(normal);
            geometry.Normals.Add(normal);

            // Die Folge wei die 3 eckpunckte für die Dreicke ertslllt werden.
            geometry.TriangleIndices.Add(baseIndex + 0);
            geometry.TriangleIndices.Add(baseIndex + 1);
            geometry.TriangleIndices.Add(baseIndex + 3);
            geometry.TriangleIndices.Add(baseIndex + 1);
            geometry.TriangleIndices.Add(baseIndex + 2);
            geometry.TriangleIndices.Add(baseIndex + 3);

            return geometry;
        }
    }
}


Danke

Gruss C#Leon
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 19.06.14 12:02 
Hallo,

ich habe dir doch schon in Bilder / Pfad Auswahl geschrieben, daß du keine hartverdrahteten Pfade benutzten sollst!
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 19.06.14 12:02 
Zitat:
Ich kann das Programm nicht mehr via exe starten.


Interessant :roll: Ist es so schwer sich vorzustellen das wir mit der Aussage 'geht nicht' nicht viel anfangen können? Warum gibst du uns nicht alle Details die du hast. Du bekommst sicher eine Fehlermeldung oder irgendwas passiert oder irgendwas passiert nicht. Das solltest du uns zumindest sagen. So kann ich gerade nur annehmen das du aufgrund eines Tremors das Icon nicht mehr triffst.

Zitat:
C:\Users\username\Pictures\IPA\MenschimBuero\1.jpg


Im Code sehe ich die Nennung eines konkreten Users. Den Pfad, den User und die entsprechende Datei gibt es auch auf allen Rechnern an dieser Stelle?
C#Leon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Do 19.06.14 12:39 
Also die .exe Datei ich Idiot habe die Falsche gestartet.
Aber es funktioniert auch nicht mit der Normalen .exe Datei auf einem anderen Computer auf meinem Computer funktioniert alles gut.
Ich kopiere den ganzen Programm Order auf einen anderen PC der "username" im Pfad passe ich an je nach dem an. Die Bilder kopiere ich ebenfalls auf den anderen Computer und stecke sie in den vordefinierten Pfad. Auf diesen Computer ist alles 1 zu 1 gleich ausser das VS 2012 Prof. nicht vorhanden ist auf einem PC auf dem auch VS 2012 prof. hat es auch nicht funktioniert. Aber ich kann das Programm via .exe Datei starten das GUI erscheint doch sobald ich einer der Knöpfe drücke um einen der 3 Würfel dazustellen stürzt das Programm und diese Fehler Meldung kommt : Do you want to send more infrmation about the problem.
Ich verstehe nicht warum es nicht läuft es sollte doch gehen ich ändere ja nur den Namen des Users alles andere ist genau dass selbe. Wo steckt der BUG.
Gruss C#Leon

Moderiert von user profile iconTh69: Full-Quote entfernt.
Talemantros
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Do 19.06.14 13:36 
Hallo C#Leon,
es ist ziemlich schwer nachzuvollziehen mit deinen Angaben warum dein Tool nicht funktioniert.
Du hast in deinem Quellcode mehrere Ecken mit festen Pfadangaben.
Vielleicht übersiehst du eine oder hast einen Schreibfehler im Benutzernamen oder ähnliches.
Wenn dein Programm auf einem Rechner läuft und das Framework auf dem anderen Rechner drauf ist sollte es theoretisch unabhängig vom VS2012 laufen.

Ich bin zwar selber noch Anfänger würde dir aber raten den Pfad in eine Art Optionsmenü zu basteln, entweder zum Einstellen durch den Benutzer, oder den Pfad relativ zum Start des Pfades der exe zu basteln.

Zum Einstellen durch den Benutzer könntest du ja vielleicht den FolderBrowserDialog verwenden. (Damit umgehst du die Wahrscheinlichkeit von TippFehlern)

Ich hoffe das hilft dir.

VG
C#Leon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Do 19.06.14 13:38 
Danke doch die Vorgaben darf ich nicht machen die sind gemacht.

Gruss Leon
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 19.06.14 15:05 
Du solltest jetzt ersteinmal den genauen Grund für den Fehler herausfinden, s. myCSharp.de - Programm läuft in anderer Umgebung nicht (richtig) (besonders ab Punkt "5. Sonstige Umgebung").

PS: Die Vorgabe ist ja wohl völliger Quatsch!
Und wenn du schon einen Usernamen im Pfad hast, dann besorge dir den Pfad mittels Environment.GetFolderPath mit SpecialFolder.UserProfile (bzw. gleich SpecialFolder.MyPictures) als Parameter (und baue den Pfad dann mittels Path.Combine zusammen).
C#Leon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Do 19.06.14 15:13 
Ich weiss das die Vorgaben nicht optimal sind doch wie gesagt ich habe nichts zu melden. Danke

Der Pafad setze ich wie man im Code sieht zusammen. Mit combine.

Hier die Lösung:



ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
/* Datei                : MainWindow.xaml.cs
    *Programmierer      : *******
    *Firma              : *******
    *Version            : 0.1  
    *Start Datum        : *******
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Media.Media3D;
using Cube3DLib;

namespace Cube3D
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
         
        public MainWindow()
        {
            InitializeComponent();
      

          
        }

      Cube cube1;
      int PN = 0;
      int groesse = 5;
      
     
       private void Button_Click_8(object sender, RoutedEventArgs e)
       {
           //remove angzeigter Würfel
           Cube_Port.Children.Remove(cube1);
           //projekt drei erstellung wüfel
           cube1 = new Cube3DLib.Cube(new Point3D(000), @"IPA\MenschimBüro");
           // Wo der Würfel angezigt werden soll.
           Cube_Port.Children.Add(cube1);
           PN = 1;
       }
        

        private void Button_Click_6(object sender, RoutedEventArgs e)
        {
            //remove angezeiter würfel
            Cube_Port.Children.Remove(cube1);
            // Projekt eins erstellung wüfel
            cube1 = new Cube3DLib.Cube(new Point3D(000), @"IPA\vercicle");
            // Wo der Würfel angezigt werden soll.
            Cube_Port.Children.Add(cube1);
            PN = 2;
            
        }

        private void Button_Click_7(object sender, RoutedEventArgs e)
        {
            // remove angezeigter würfel
            Cube_Port.Children.Remove(cube1);
            //projekt 2 Erstellung würfel
            cube1 = new Cube3DLib.Cube(new Point3D(000), @"%IPA\DynamicsHumaKnee");
            // Wo der Würfel angezigt werden soll.
            Cube_Port.Children.Add(cube1);
            PN = 3;
        }

               
        // Aufruf der Funktion RotateY via Knopf Y-Achse
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            
            cube1.RotateY();
            Textbox2.Clear();
        }

        // Aufruf der Funktion RotateY via Knopf Z-Achse
        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            cube1.RotateZ();
            Textbox2.Clear();
        }
        // Aufruf der Funktion RotateY via Knopf X-Achse
        private void RepeatButton_Click_1(object sender, RoutedEventArgs e)
        {
            cube1.RotateX();
            Textbox2.Clear();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            //Help Anzeige
            Textbox.Text = "Willommen wählen sie einer der 3 Würfel. Um den Würfel aud der X, Y oder Z Achse rotieren zu lassen halten sie den Knopf gedrückt. Alle anderen Funktionen können gestaretet werden wenn sie einmal auf den Knopf drücken.";
            Textbox2.Clear();
        }

        //Reset Knopf Galierie1
        private void Button_Click_3(object sender, RoutedEventArgs e)
        {
            switch (PN)
            {
                    case 1:
                    
                    Cube_Port.Children.Remove(cube1);
                    cube1 = new Cube3DLib.Cube(new Point3D(000), @"IPA\MenschimBüro");
                    Cube_Port.Children.Add(cube1);
                    PN = 1;
                    break;

                    case 2:
                 
                    Cube_Port.Children.Remove(cube1);
                    cube1 = new Cube3DLib.Cube(new Point3D(000), @"IPA\vercicle");
                    Cube_Port.Children.Add(cube1);
                    PN = 2;
                    break;

                    case 3:
                    
                    Cube_Port.Children.Remove(cube1);
                    cube1 = new Cube3DLib.Cube(new Point3D(000), @"IPA\DynamicsHumaKnee");
                    Cube_Port.Children.Add(cube1);
                    PN = 3;
                    break;

                    default:

                    Textbox2.Text = " Es muss ein Würfel dargestllt werden um ihn in die Ausgangspostion zu setzen.";
                    break;

            }

        }

        private void Button_Click_4(object sender, RoutedEventArgs e)
        {
           
            //würfel in die Ausbelnden
            Cube_Port.Children.Remove(cube1);
            Textbox2.Clear();
            
              

        }
        //wüfel einbelnden
        private void Button_Click_5(object sender, RoutedEventArgs e)
        {
            try { Cube_Port.Children.Add(cube1); }

            catch (ArgumentException)
            {
                Textbox2.Text = "Nicht mehr als ein Würfel!";
            }
            
           
        }

        // Würdel verkleinern 
        private void Button_Click_9(object sender, RoutedEventArgs e)
        {
            Textbox2.Clear();
            string gr = Convert.ToString(groesse);
        }

        //Würdel vergrössern
        private void Button_Click_10(object sender, RoutedEventArgs e)
        {
            Textbox2.Clear();
            Textbox2.Text = "Diese Funktion funktioniert noch nicht";
        }

        private void Textbox2_TextChanged(object sender, TextChangedEventArgs e)
        {

        }
   
       
    }
}


ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
/* Datei                : Cube.cs
    *Programmierer      : ******
    *Firma              : ******
    *Version            : 0.1  
    *Start Datum        : ******
 */


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Media.Media3D;
using System.Windows.Media;
using System.Windows;
using System.Windows.Media.Imaging;
using System.IO;

namespace Cube3DLib
{
    public class Cube : ModelVisual3D
    {
        Model3DGroup meshGroup;
        RotateTransform3D myXRotateTransform3D;
        RotateTransform3D myYRotateTransform3D;
        RotateTransform3D myZRotateTransform3D;
        
        // Roation X Achse
        AxisAngleRotation3D myXAxisAngleRotation3d;
        //Roation Y Achse
        AxisAngleRotation3D myYAxisAngleRotation3d;
        // Roation Z Achse
        AxisAngleRotation3D myZAxisAngleRotation3d;
       //Zentrum des 3D Objektes
        Point3D center;

        public Cube(Point3D center, string imagePath)
        {
            // Erstellung erstets 3D Obejekt 
            Name = "cube1";
            meshGroup = new Model3DGroup();
            this.center = center;
            CreateCube(imagePath);

            // Roation um X Achse
            myXRotateTransform3D = new RotateTransform3D();
            myXAxisAngleRotation3d = new AxisAngleRotation3D();
            myXAxisAngleRotation3d.Angle = 40;
            myXRotateTransform3D.Rotation = myXAxisAngleRotation3d;

            // Roation Un Y Achse
            myYRotateTransform3D = new RotateTransform3D();
            myYAxisAngleRotation3d = new AxisAngleRotation3D();
            myYAxisAngleRotation3d.Angle = 0;
            myYRotateTransform3D.Rotation = myYAxisAngleRotation3d;

            // Roation um Z Achse
            myZRotateTransform3D = new RotateTransform3D();
            myZAxisAngleRotation3d = new AxisAngleRotation3D();
            myZAxisAngleRotation3d.Angle = 0;
            myZRotateTransform3D.Rotation = myZAxisAngleRotation3d;

            // Grupireung der Roation um sauberer Derhung zu erhalten
            Transform3DGroup rotate = new Transform3DGroup();
            rotate.Children.Add(myXRotateTransform3D);
            rotate.Children.Add(myYRotateTransform3D);
            rotate.Children.Add(myZRotateTransform3D);
            
            meshGroup.Transform = rotate;

        }

 
        //X Roatation  
        public void RotateX()
        {
            // Angabe auf welcher Achse der würfel rotiert
            myXAxisAngleRotation3d.Axis = new Vector3D(030);
            // Angabe um wie viel grad und auf welche Seite der Würfel drehen soll.
            myXAxisAngleRotation3d.Angle = myXAxisAngleRotation3d.Angle + 15;
        }


        //Y Rotation 
        public void RotateY()
        {
            // Angabe auf welcher Achse der würfel rotiert
            myYAxisAngleRotation3d.Axis = new Vector3D(300);
            // Angabe um wie viel grad und auf welche Seite der Würfel drehen soll.
            myYAxisAngleRotation3d.Angle = myYAxisAngleRotation3d.Angle + 15;
        }

        //Z Rotation
        public void RotateZ()
        {
            // Angabe auf welcher Achse der würfel rotiert
            myZAxisAngleRotation3d.Axis = new Vector3D(003);
            // Angabe um wie viel grad und auf welche Seite der Würfel drehen soll.
            myZAxisAngleRotation3d.Angle = myZAxisAngleRotation3d.Angle + 15;
       }
        
       
        public string Name { get; set; }

        //Wuerfel erstllung
        private void CreateCube(string imagePath)
        {
            // Punkte im Kordianten system definierung jeder Punkt hat eien X;Y und Z Korinate.
            Point3D a = new Point3D(center.X - 1, center.Y - 1, center.Z + 1); 
            Point3D b = new Point3D(center.X + 1, center.Y - 1, center.Z + 1); 
            Point3D c = new Point3D(center.X + 1, center.Y + 1, center.Z + 1); 
            Point3D d = new Point3D(center.X - 1, center.Y + 1, center.Z + 1); 
            Point3D e = new Point3D(center.X + 1, center.Y - 1, center.Z - 1); 
            Point3D f = new Point3D(center.X - 1, center.Y - 1, center.Z - 1);
            Point3D g = new Point3D(center.X - 1, center.Y + 1, center.Z - 1); 
            Point3D h = new Point3D(center.X + 1, center.Y + 1, center.Z - 1);

            //Erstellung der Seite1 mit Bild1 //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            GeometryModel3D front = new GeometryModel3D(BuildRectangle(a, b, c, d, new Vector3D(00, +1)), new DiffuseMaterial(new ImageBrush(new BitmapImage(
               new Uri(Path.Combine(imagePath, "1.jpg"), UriKind.Relative)))));

            //Rückseite der Seite1 mit Bild 1 bestückt //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            front.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "1.jpg"), UriKind.Relative))));

            //Ertsellung der Seite2 mit Bild2 //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            GeometryModel3D back = new GeometryModel3D(BuildRectangle(e, f, g, h, new Vector3D(00, -1)), new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "2.Jpg"), UriKind.Relative)))));

            //Rückseite der Seite2 mit Bild2 bestückt //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            back.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "2.jpg"), UriKind.Relative))));

            //Erstellung der Seite3 mit Bild3 //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            GeometryModel3D right = new GeometryModel3D(BuildRectangle(b, e, h, c, new Vector3D(100)), new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "3.jpg"), UriKind.Relative)))));

            //Rückseite der Seite3 mit Bild3 der bestückt //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            right.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "3.jpg"), UriKind.Relative))));

            //Erstellung der Seite4 mit Bild4 //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            GeometryModel3D left = new GeometryModel3D(BuildRectangle(f, a, d, g, new Vector3D(-100)), new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "4.jpg"), UriKind.Relative)))));

            //Rückseite der Seite4 mit Bild4 der bestückt //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            left.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "4.jpg"), UriKind.Relative))));

            //Erstellung der Seite5 mit Bild5 //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            GeometryModel3D bottom = new GeometryModel3D(BuildRectangle(e, b, a, f, new Vector3D(0, -10)), new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "5.jpg"), UriKind.Relative)))));

            //Rückseite der Seite5 mit Bild5 bestückt //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            bottom.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "5.jpg"), UriKind.Relative))));

            //Erstellung der Seite6 mit Bild6 //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            GeometryModel3D top = new GeometryModel3D(BuildRectangle(d, c, h, g, new Vector3D(010)), new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "6.jpg"), UriKind.Relative)))));

            //Rückseite der Seite6 mit Bild6 bestückt //Der Löungsweg für die Würfeldartellung mit Bilder satmmt von (wwww.entwickler-ecke....wtopic.php?t=113046)
            top.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage(
                new Uri(Path.Combine(imagePath, "6.jpg"), UriKind.Relative))));
                    
            // Seite für den betrachter definierung
            meshGroup.Children.Add(front);
            meshGroup.Children.Add(back);
            meshGroup.Children.Add(right);
            meshGroup.Children.Add(left);
            meshGroup.Children.Add(bottom);
            meshGroup.Children.Add(top);

            this.Content = meshGroup;
        }
        

        // Dreieckerstellung
        private MeshGeometry3D BuildRectangle(Point3D a, Point3D b, Point3D c, Point3D d, Vector3D normal)
        {
            MeshGeometry3D geometry = new MeshGeometry3D();
            int baseIndex = geometry.Positions.Count;

            geometry.Positions.Add(a);
            geometry.Positions.Add(b);
            geometry.Positions.Add(c);
            geometry.Positions.Add(d);

            // Farbverlauf falls erwuenscht es muessten 2 Farben vorhanden sein
     
            geometry.TextureCoordinates.Add(new Point(01));
            geometry.TextureCoordinates.Add(new Point(11));
            geometry.TextureCoordinates.Add(new Point(10));
            geometry.TextureCoordinates.Add(new Point(00));

            // Nomrlaverbindung 
            geometry.Normals.Add(normal);
            geometry.Normals.Add(normal);
            geometry.Normals.Add(normal);
            geometry.Normals.Add(normal);

            // Die Folge wei die 3 eckpunckte für die Dreicke ertslllt werden.
            geometry.TriangleIndices.Add(baseIndex + 0);
            geometry.TriangleIndices.Add(baseIndex + 1);
            geometry.TriangleIndices.Add(baseIndex + 3);
            geometry.TriangleIndices.Add(baseIndex + 1);
            geometry.TriangleIndices.Add(baseIndex + 2);
            geometry.TriangleIndices.Add(baseIndex + 3);

            return geometry;
        }
    }
}