Autor |
Beitrag |
C#Leon
Beiträge: 16
|
Verfasst: 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.
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:
| 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 { 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) { Cube_Port.Children.Remove(cube1); cube1 = new Cube3DLib.Cube(new Point3D(0, 0, 0), @"C:\Users\hagger\Pictures\IPA\MenschimBüro"); Cube_Port.Children.Add(cube1); PN = 1; }
private void Button_Click_6(object sender, RoutedEventArgs e) { Cube_Port.Children.Remove(cube1); cube1 = new Cube3DLib.Cube(new Point3D(0, 0, 0), @"C:\Users\hagger\Pictures\IPA\vercicle"); Cube_Port.Children.Add(cube1); PN = 2; }
private void Button_Click_7(object sender, RoutedEventArgs e) { Cube_Port.Children.Remove(cube1); cube1 = new Cube3DLib.Cube(new Point3D(0, 0, 0), @"C:\Users\hagger\Pictures\IPA\DynamicsHumaKnee"); Cube_Port.Children.Add(cube1); PN = 3; }
private void Button_Click_1(object sender, RoutedEventArgs e) { cube1.RotateY(); Textbox2.Clear(); }
private void Button_Click_2(object sender, RoutedEventArgs e) { cube1.RotateZ(); Textbox2.Clear(); } private void RepeatButton_Click_1(object sender, RoutedEventArgs e) { cube1.RotateX(); Textbox2.Clear(); }
private void Button_Click(object sender, RoutedEventArgs e) { 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(); }
private void Button_Click_3(object sender, RoutedEventArgs e) { switch (PN) { case 1: Cube_Port.Children.Remove(cube1); cube1 = new Cube3DLib.Cube(new Point3D(0, 0, 0), @"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(0, 0, 0), @"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(0, 0, 0), @"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) { Cube_Port.Children.Remove(cube1); Textbox2.Clear();
} 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!"; } }
private void Button_Click_9(object sender, RoutedEventArgs e) { Textbox2.Clear(); string gr = Convert.ToString(groesse); }
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) {
} } } |
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:
|
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; AxisAngleRotation3D myXAxisAngleRotation3d; AxisAngleRotation3D myYAxisAngleRotation3d; AxisAngleRotation3D myZAxisAngleRotation3d; Point3D center;
public Cube(Point3D center, string imagePath) { Name = "cube1"; meshGroup = new Model3DGroup(); this.center = center; CreateCube(imagePath);
myXRotateTransform3D = new RotateTransform3D(); myXAxisAngleRotation3d = new AxisAngleRotation3D(); myXAxisAngleRotation3d.Angle = 40; myXRotateTransform3D.Rotation = myXAxisAngleRotation3d;
myYRotateTransform3D = new RotateTransform3D(); myYAxisAngleRotation3d = new AxisAngleRotation3D(); myYAxisAngleRotation3d.Angle = 0; myYRotateTransform3D.Rotation = myYAxisAngleRotation3d;
myZRotateTransform3D = new RotateTransform3D(); myZAxisAngleRotation3d = new AxisAngleRotation3D(); myZAxisAngleRotation3d.Angle = 0; myZRotateTransform3D.Rotation = myZAxisAngleRotation3d;
Transform3DGroup rotate = new Transform3DGroup(); rotate.Children.Add(myXRotateTransform3D); rotate.Children.Add(myYRotateTransform3D); rotate.Children.Add(myZRotateTransform3D); meshGroup.Transform = rotate;
}
public void RotateX() { myXAxisAngleRotation3d.Axis = new Vector3D(0, 3, 0); myXAxisAngleRotation3d.Angle = myXAxisAngleRotation3d.Angle + 15; }
public void RotateY() { myYAxisAngleRotation3d.Axis = new Vector3D(3, 0, 0); myYAxisAngleRotation3d.Angle = myYAxisAngleRotation3d.Angle + 15; }
public void RotateZ() { myZAxisAngleRotation3d.Axis = new Vector3D(0, 0, 3); myZAxisAngleRotation3d.Angle = myZAxisAngleRotation3d.Angle + 15; } public string Name { get; set; }
private void CreateCube(string imagePath) { 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);
GeometryModel3D front = new GeometryModel3D(BuildRectangle(a, b, c, d, new Vector3D(0, 0, +1)), new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "1.jpg"), UriKind.Absolute)))));
front.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "1.jpg"), UriKind.Absolute))));
GeometryModel3D back = new GeometryModel3D(BuildRectangle(e, f, g, h, new Vector3D(0, 0, -1)), new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "2.Jpg"), UriKind.Absolute)))));
back.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "2.jpg"), UriKind.Absolute))));
GeometryModel3D right = new GeometryModel3D(BuildRectangle(b, e, h, c, new Vector3D(1, 0, 0)), new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "3.jpg"), UriKind.Absolute)))));
right.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "3.jpg"), UriKind.Absolute))));
GeometryModel3D left = new GeometryModel3D(BuildRectangle(f, a, d, g, new Vector3D(-1, 0, 0)), new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "4.jpg"), UriKind.Absolute)))));
left.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "4.jpg"), UriKind.Absolute))));
GeometryModel3D bottom = new GeometryModel3D(BuildRectangle(e, b, a, f, new Vector3D(0, -1, 0)), new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "5.jpg"), UriKind.Absolute)))));
bottom.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "5.jpg"), UriKind.Absolute))));
GeometryModel3D top = new GeometryModel3D(BuildRectangle(d, c, h, g, new Vector3D(0, 1, 0)), new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "6.jpg"), UriKind.Absolute)))));
top.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "6.jpg"), UriKind.Absolute)))); 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; }
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);
geometry.TextureCoordinates.Add(new Point(0, 1)); geometry.TextureCoordinates.Add(new Point(1, 1)); geometry.TextureCoordinates.Add(new Point(1, 0)); geometry.TextureCoordinates.Add(new Point(0, 0));
geometry.Normals.Add(normal); geometry.Normals.Add(normal); geometry.Normals.Add(normal); geometry.Normals.Add(normal);
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
Beiträge: 4764
Erhaltene Danke: 1052
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: 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
Beiträge: 4701
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Do 19.06.14 12:02
Zitat: | Ich kann das Programm nicht mehr via exe starten. |
Interessant 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
Beiträge: 16
|
Verfasst: 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 Th69: Full-Quote entfernt.
|
|
Talemantros
Beiträge: 444
Erhaltene Danke: 2
Win7 Proff 64bit
C# (VS2013)
|
Verfasst: 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
Beiträge: 16
|
Verfasst: Do 19.06.14 13:38
Danke doch die Vorgaben darf ich nicht machen die sind gemacht.
Gruss Leon
|
|
Th69
Beiträge: 4764
Erhaltene Danke: 1052
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: 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
Beiträge: 16
|
Verfasst: 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:
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:
| 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 { 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) { Cube_Port.Children.Remove(cube1); cube1 = new Cube3DLib.Cube(new Point3D(0, 0, 0), @"IPA\MenschimBüro"); Cube_Port.Children.Add(cube1); PN = 1; }
private void Button_Click_6(object sender, RoutedEventArgs e) { Cube_Port.Children.Remove(cube1); cube1 = new Cube3DLib.Cube(new Point3D(0, 0, 0), @"IPA\vercicle"); Cube_Port.Children.Add(cube1); PN = 2; }
private void Button_Click_7(object sender, RoutedEventArgs e) { Cube_Port.Children.Remove(cube1); cube1 = new Cube3DLib.Cube(new Point3D(0, 0, 0), @"%IPA\DynamicsHumaKnee"); Cube_Port.Children.Add(cube1); PN = 3; }
private void Button_Click_1(object sender, RoutedEventArgs e) { cube1.RotateY(); Textbox2.Clear(); }
private void Button_Click_2(object sender, RoutedEventArgs e) { cube1.RotateZ(); Textbox2.Clear(); } private void RepeatButton_Click_1(object sender, RoutedEventArgs e) { cube1.RotateX(); Textbox2.Clear(); }
private void Button_Click(object sender, RoutedEventArgs e) { 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(); }
private void Button_Click_3(object sender, RoutedEventArgs e) { switch (PN) { case 1: Cube_Port.Children.Remove(cube1); cube1 = new Cube3DLib.Cube(new Point3D(0, 0, 0), @"IPA\MenschimBüro"); Cube_Port.Children.Add(cube1); PN = 1; break;
case 2: Cube_Port.Children.Remove(cube1); cube1 = new Cube3DLib.Cube(new Point3D(0, 0, 0), @"IPA\vercicle"); Cube_Port.Children.Add(cube1); PN = 2; break;
case 3: Cube_Port.Children.Remove(cube1); cube1 = new Cube3DLib.Cube(new Point3D(0, 0, 0), @"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) { Cube_Port.Children.Remove(cube1); Textbox2.Clear();
} 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!"; } }
private void Button_Click_9(object sender, RoutedEventArgs e) { Textbox2.Clear(); string gr = Convert.ToString(groesse); }
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) {
} } } |
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:
|
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; AxisAngleRotation3D myXAxisAngleRotation3d; AxisAngleRotation3D myYAxisAngleRotation3d; AxisAngleRotation3D myZAxisAngleRotation3d; Point3D center;
public Cube(Point3D center, string imagePath) { Name = "cube1"; meshGroup = new Model3DGroup(); this.center = center; CreateCube(imagePath);
myXRotateTransform3D = new RotateTransform3D(); myXAxisAngleRotation3d = new AxisAngleRotation3D(); myXAxisAngleRotation3d.Angle = 40; myXRotateTransform3D.Rotation = myXAxisAngleRotation3d;
myYRotateTransform3D = new RotateTransform3D(); myYAxisAngleRotation3d = new AxisAngleRotation3D(); myYAxisAngleRotation3d.Angle = 0; myYRotateTransform3D.Rotation = myYAxisAngleRotation3d;
myZRotateTransform3D = new RotateTransform3D(); myZAxisAngleRotation3d = new AxisAngleRotation3D(); myZAxisAngleRotation3d.Angle = 0; myZRotateTransform3D.Rotation = myZAxisAngleRotation3d;
Transform3DGroup rotate = new Transform3DGroup(); rotate.Children.Add(myXRotateTransform3D); rotate.Children.Add(myYRotateTransform3D); rotate.Children.Add(myZRotateTransform3D); meshGroup.Transform = rotate;
}
public void RotateX() { myXAxisAngleRotation3d.Axis = new Vector3D(0, 3, 0); myXAxisAngleRotation3d.Angle = myXAxisAngleRotation3d.Angle + 15; }
public void RotateY() { myYAxisAngleRotation3d.Axis = new Vector3D(3, 0, 0); myYAxisAngleRotation3d.Angle = myYAxisAngleRotation3d.Angle + 15; }
public void RotateZ() { myZAxisAngleRotation3d.Axis = new Vector3D(0, 0, 3); myZAxisAngleRotation3d.Angle = myZAxisAngleRotation3d.Angle + 15; } public string Name { get; set; }
private void CreateCube(string imagePath) { 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);
GeometryModel3D front = new GeometryModel3D(BuildRectangle(a, b, c, d, new Vector3D(0, 0, +1)), new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "1.jpg"), UriKind.Relative)))));
front.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "1.jpg"), UriKind.Relative))));
GeometryModel3D back = new GeometryModel3D(BuildRectangle(e, f, g, h, new Vector3D(0, 0, -1)), new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "2.Jpg"), UriKind.Relative)))));
back.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "2.jpg"), UriKind.Relative))));
GeometryModel3D right = new GeometryModel3D(BuildRectangle(b, e, h, c, new Vector3D(1, 0, 0)), new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "3.jpg"), UriKind.Relative)))));
right.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "3.jpg"), UriKind.Relative))));
GeometryModel3D left = new GeometryModel3D(BuildRectangle(f, a, d, g, new Vector3D(-1, 0, 0)), new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "4.jpg"), UriKind.Relative)))));
left.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "4.jpg"), UriKind.Relative))));
GeometryModel3D bottom = new GeometryModel3D(BuildRectangle(e, b, a, f, new Vector3D(0, -1, 0)), new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "5.jpg"), UriKind.Relative)))));
bottom.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "5.jpg"), UriKind.Relative))));
GeometryModel3D top = new GeometryModel3D(BuildRectangle(d, c, h, g, new Vector3D(0, 1, 0)), new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "6.jpg"), UriKind.Relative)))));
top.BackMaterial = new DiffuseMaterial(new ImageBrush(new BitmapImage( new Uri(Path.Combine(imagePath, "6.jpg"), UriKind.Relative)))); 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; }
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);
geometry.TextureCoordinates.Add(new Point(0, 1)); geometry.TextureCoordinates.Add(new Point(1, 1)); geometry.TextureCoordinates.Add(new Point(1, 0)); geometry.TextureCoordinates.Add(new Point(0, 0));
geometry.Normals.Add(normal); geometry.Normals.Add(normal); geometry.Normals.Add(normal); geometry.Normals.Add(normal);
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; } } } |
|
|
|