Grafik oder CAD Programm

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Snaptu.

    Grafik oder CAD Programm

    Hallo

    Ich möchte lernen wie man ein Grafikprogramm und CAD Programm programmiert

    Ich bin auf der Suche nach ein Open Soucre Programm die ich mit Visual Studio 2013 Express öffnen kann.

    Um den Code anzuschauen um es zu lernen.

    Ich habe mir NaroCAD schon angeschaut leider geht das nur unter Visual Studio 2008 das hab ich leider nicht.

    Kennt jemand ein open source Programm die man mit Visual Studio 2013 Express öffnen kann

    Gruß

    Matthias
    Willkommen im Forum. :thumbup:

    Matthias_80 schrieb:

    die ich mit Visual Studio 2013 Express öffnen kann.
    Über welche Programmierkenntnisse verfügst Du?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Also mit Visual Basic kann ich Grundsachen schon machen wie z.b. kleines Datenbank Programm (z.b. Kassenbuch, CD-Verwaltung, Filmverwaltung)

    Jetzt möchte ich mich einfach erweiten und ein kleines Grafikprogramm machen die aber nicht nur auf Vektor Grafik sein sollte.

    Sonst hab ich noch grundkennise von PHP & MySQL für Webseiten.

    Matthias_80 schrieb:

    Jetzt möchte ich mich einfach erweiten und ein kleines Grafikprogramm machen die aber nicht nur auf Vektor Grafik sein sollte.


    Das ist alles nicht so einfach wie du denkst besonders weil CAD auch 3D Objekte beinhaltet und ich denke das du mit Standard .NET Libraries das nicht realisieren kannst (eher mit OGL/OTK oder SharpDX). Da du erst die Grundlagen kennst würde ich mich an deiner Stelle erstmal an einem kleinen Paint-Klon halten. Habe damit damals auch mal angefangen (aktuell bin ich aber in C++ und Python unterwegs). Danach kann man in Richtung Vektorgrafik gehen. Jedoch bevor ich mit CAD anfangen würde, würde ich mich erstmal mehr mit OpenGL/OpenTK oder anderen Dingen im "3D" Bereich auseinandersetzen.
    Software being "Done" is like lawn being "Mowed". (Jim Benson)

    Matthias_80 schrieb:

    und ein kleines Grafikprogramm machen
    Fang vielleicht an mit einem Paint-ähnlichen Programm, das ist zwar ein Programm mit Pixelgrafik, da kannst Du aber eine ganze Menge bezüglich Usereingabe und unmittelbare Darstellung der Eingaben lernen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Matthias_80 schrieb:

    Visual Studio 2008

    Irrelevant, lässt sich mit den neuen auch öffnen. Kann sein, dass er das Projekt konvertiert und dabei Fehler einbaut, die sind aber dann meist sehr einfach und repititiv lösbar.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Dann würde ich persönlcih einfach mal mit GDI+ anfangen. Ist dann 2D Raum, und du bekommst ein Gefühl für die Funktionsweise.
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    nur mein ein kleines Beispiel

    Ich möchte eine Line mit der Maus zeichnen

    Position für x1 und y1 soll der erste klick mit der Linken maustaste sein.
    Position für x2 und y2 soll dann der zweite klick mit der Linken maustaste sein.

    Quellcode

    1. p = New Pen(System.Drawing.Color.Black, 2)
    2. graphic.DrawLine(p, 10, 20, 100, 20)


    Wie macht man das am Besten?
    Also, eine Boolean Eigenschaft. Einfach beim ersten Klick auf True Setzen und eben Abfragen, wenn Eigenschaft XY = False dann erster Punkt, wenn Eigenschaft True dann 2 Punkt. Beim 2 Punkt Eigenschaft wieder auf False
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    Ich hab das jetzt mal so Probiert leider zeichnet er mir da nicht nur die eine Linke sondern macht mehrer

    Ich möchte aber nur eine Line haben

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim graphic As Graphics
    3. Dim p As Pen
    4. Dim x1 As Integer
    5. Dim y1 As Integer
    6. Dim x2 As Integer
    7. Dim y2 As Integer
    8.  
    9. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    10. x1 = 0
    11. graphic = Me.Panel1.CreateGraphics()
    12. End Sub
    13. Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
    14. p = New Pen(System.Drawing.Color.Black, 2)
    15. End Sub
    16. Private Sub Panel1_MouseClick(sender As Object, e As MouseEventArgs) Handles Panel1.MouseClick
    17. If x1 = 0 Then
    18. x1 = MousePosition.X
    19. y1 = MousePosition.Y
    20. Zeichnen.Enabled = True
    21. Else
    22. x2 = MousePosition.X
    23. y2 = MousePosition.Y
    24. Zeichnen.Enabled = False
    25. graphic.DrawLine(p, x1, y1, x2, y2)
    26. End If
    27. End Sub
    28. Private Sub Zeichnen_Tick(sender As Object, e As EventArgs) Handles Zeichnen.Tick
    29. graphic.DrawLine(p, x1, y1, MousePosition.X, MousePosition.Y)
    30. End Sub
    31. End Class
    Also was hier noch komplett fehlt ist ein Datenmodell.
    Mach dir erst ein Datenmodell, mit welchem du durch deine gegebene Steuerung deine Linien mit Punkten gekapselt in Klassen so abspeicherst, dass immer alle Daten zum gezeichneten im Speicher vorhanden sind(und evtl. abgespeichert und wieder geladen werden können als Linien und nicht als Bild). Dann kannst du dir Gedanken über das zeichnen machen, welches dann aber auch im Paint-Event sehr einfach von statten geht, da deine Daten zu jederzeit abrufbar und übersichtlich in deiner Klasse zu finden sind...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Hallo Jvbsl

    Sorry das ich erst jetzt Antworte ich Programmiere mit VB nur als Hoppy da ich noch Arbeite und Familie daheim habe. Daher kann ich nicht immer gleich Antworten.

    Ich versteh jetzt nicht wie du das gemeinst hast.

    Meiner du eine Klasse erstellen wo dann der Code für Linie, Rechtecke, ecken Abrunden usw. drin ist?
    Mir ist es egal, wann du antwortest, für mich ändert sich ja nichts.
    Du könntest z.b. mit einem Interface anfangen, welches eine Methode Draw enthält, die ein Graphics-Objekt entgegen nimmt.
    Dann machst du jeweils für Linien, Kurven, Kreise, ... eine extra Klasse, welche von dem Interface erben. Jeder dieser Klassen enthält natürlich alle Informationen, die man zum Zeichnen benötigt (Punkte, Winkel, o.ä) und in der Draw-Methode implementierst du das zeichnen der jeweiligen Objekte.
    Dann erstellst du noch eine Klasse, in welcher du all deine Objekte sammelst (erbt auch von dem Interface).
    Innerhalb deines Formulars instanzierst du dann die Sammelklasse und fügst ihr beientsprechendern Klick/Move-Ereignissen deine Objekte hinzu und rufst Invalidate auf. Zum zeichnen rufst du nur noch dessen Draw-Methode im Paint-Event mit e.Graphics auf.
    Etwas ausm Kopf zusammen geschriebener Code:

    Visual Basic-Quellcode

    1. Class Sammelklasse implements DeinInterface
    2. Private elements As List (Of DeinInterface)
    3. Public Sub Add (element As DeinInterface)
    4. elements.Add (element)
    5. End Sub
    6. Public Sub Draw (Graphics g)
    7. For Each e As DeinInterface In elements
    8. e.Draw (g)
    9. Next
    10. End Sub
    11. End Class

    Wenn du verstehen willst, wozu das Interface gut ist. Dann lese dich in OOP ein, das ist die Grundlage aller modernenProgrammiersprachen
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Am besten isses wahrscheinlich wenn du die Eingabe mal per Koordinaten machst also X,Y Achse und dann eine Linie, Bogen oder sonst was erzeugt.
    Diese Eingabe-Methode gibts ja auch in AutoCAD nur verwendet sie fast keiner mehr aus wenn du es lernst dann wird damit angefangen.
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.