Wortvorhersage mit C++/C# programmieren

P-Froggy

Vertrauter
Hallo,
ich will momentan C++, bzw. C# lernen.
Die erste Frage die sich natürlich stellt bevor ich euch meine Projektidee erkäre, ist folgende: Was von beiden ist empfehlenswerter (für Windows-Programme)?

Das Projekt das ich mir vorgenommen habe ist relativ einfach zu erklären, aber schwer umzusetzen, trotzdem will ich es veruschen:
Wer Smartphones benutzt wird sicher die Textvorhersage schätzen. Etwas ähnliches will ich auch für Windows umsetzen, sodass man bei der Eingabe von Wörtern eine Leiste mit Wortvorschlägen eingeblendet bekommt, welche man mit den Zahlen 1 bis 0 auswählen kann. Das ganze sollte Global funktionieren, also für alle Programme.

Auch wenn ich mir ein schweres Ziel ausgesucht habe will es es trotzdem versuchen. Ich bin auch nicht ganz unerfahren, bisher habe ich inUnterricht in HTML, Java, PHP (alles noch in Grundschulzeiten, also ist die Erinnerung daran nicht mehr so gut), dann habe ich mir selbst Flash und das Skripten für Oblivion beigebracht, und momentan habe ich einen Schulkurs mit Delphi.
Das Programm würde ich "etappenweise" erstellen, sodass ich dabei die Programmiersprache lerne, auch wenn das Projekt letztendlich scheitert.

Mit Visual C++ habe ich mir dazu ein Windows-Forms-Projekt erstellt, das Fenster mit den 10 Buttons erstellt und mich mit der Toolbox und dem Eigenschaftsfenster vertraut gemacht.
Die nächste "Etappe" wäre, dass man mit den Tasten 1 bis 0 die Buttons 1 bis 0 aktivieren kann. Wenn ihr mir den Befehl für eine Taste posten könnte, könnte ich die restlichen 9 selbst herleiten und einfügen.


Ich hoffe ihr könnt mir helfen.
 
Ein Programm etappenweise zu erstellen und dabei zu lernen ist schonmal nicht schlecht, aber ich würde nicht als aller erstes mit der GUI rumspielen sondern mich auf die Algorithmen konzentrieren. Die GUI ist ein fortgeschritteneres Thema und kann schnell zur Frust werden.

Beschäftige dich erst mit der Sprache und lerne diese. Es ist auch ganz praktisch mit objektorientierter Programmierung vertraut zu sein da diese das spätere Erstellen oder Interaktion mit der GUI erleichtert. Deine Javakenntnisse werden dir dabei helfen(da objektorientierte Sprache) und mit C++ und C# bist du ebenfalls gut beraten.

Zu den beiden Sprachen: Beide sind sehr gut integriert und im Endeffekt ist es eine Frage der persönlichen Vorlieben. Nimm einfach die die dir besser Gefällt und für die du mehr bzw. bessere Dokumentation findest.
 
  • Like
Reaktionen: Ysolda
C++ ist sicher die universellere Sprache. C# ist aufgrund der Abhängigkeit von .NET an Windows gebunden. der Vorteil an C# ist allerdings, dass du einen vernünftigen GUI-Editor von Microsoft geliefert bekommst. Benutze auf keinen Fall das C++-Windows-Forms-Projekt. Visual C++ erstellt dadurch nämlich ein C++.NET-Projekt, was in extrem viel unagnehmen Konvertierungen von nativ-C(++)-Dateitypen in die größeren, komplexeren und inkompatiblen Dateitypen von .NET asufert. Selbst wenn du das schaffst, muss du dafür sorgen, dass der Anwender das "Microsoft C++ Redistributable" Paket installiert hat, sonst kann er es nicht starten. Ich habe damit sehr schlechte Erfahrungen gemacht.

Wenn du anhand eines einzelnen Programms lernen willst, solltest du deswegen aufgrund des guten GUI-Editors zu C# greifen. Kannst du darauf verzichten, würde ich eher C++ empfehlen. Ich weiß nicht, wie leicht der Umstieg von C# auf C++ ist, aber ich habe eigentlich so gut wie keine Probleme mit meinen C++-Kenntnissen in C# zurecht zu kommen.

Für meine Projekte halte ich es so: Brauche ich eine graphische Windows-Oberfläche? Wenn Ja -> C#, ansonsten C++
 
Ich würde C++ mit Qt nehmen. Qt gibt es für viele Betriebssysteme (Windows, Linux, Mac, ...) und bietet mMn. neben einer guten GUI-Bibliothek auch viele andere praktische Klassen für Datenstrukturen, Kommunikation, Threads, Timer, etc. an. Besonders elegant finde ich das Signals-Slots-System welches Eventhandling kinderleicht macht.
 
  • Like
Reaktionen: Ysolda
Ich würde C++ mit Qt nehmen. Qt gibt es für viele Betriebssysteme (Windows, Linux, Mac, ...) und bietet mMn. neben einer guten GUI-Bibliothek auch viele andere praktische Klassen für Datenstrukturen, Kommunikation, Threads, Timer, etc. an. Besonders elegant finde ich das Signals-Slots-System welches Eventhandling kinderleicht macht.

Du könntest c++ mit QT verwenden und Awesomium verwenden.
Das ermöglicht dir JavaScript's bzw. websites als GUI zu verwenden.

Dabei kannst du natürlich auch JavaScript events abfangen etc.

Es gibt bereits JavaScript Controls die das bereits unterstützen, was du vorhast ;)
 
Du könntest c++ mit QT verwenden und Awesomium verwenden.
Das ermöglicht dir JavaScript's bzw. websites als GUI zu verwenden.

Dabei kannst du natürlich auch JavaScript events abfangen etc.

Es gibt bereits JavaScript Controls die das bereits unterstützen, was du vorhast ;)

Das hilft ihm aber nicht wirklich die Sprach von Grund auf zu lernen. Außerdem hat er ja geschrieben, dass er es komplett selber machen will.
 
Wisst ihr zufällig eine gutes Handbuch, am besten wäre eine Video-Anleitung, die gibts zwar zu kaufen, aber bevor ich gleich 40€ ausgebe würde ich erstmal gerne die Grundlagen kennen und dann entscheiden, ob ich weiterlernen will.

Als Alternative fällt mir noch ein Art Startcenter ein, da die Wortvorhersage doch etwas schwerer ist.
Das sollte dann einfach ein Vollbild-Programm sein, in dem sich eine vertikale Liste mit Programm und Dateiverknüpfungen befindet, als alternative zum Desktop also.
Wenns für so was in der Art eine Anleitung gibt, wäre ich glücklich. Als ich damals mit Flash gearbeitet habe, habe etwas ähnliches ziehmlich schnell hingekriegt, bei Windows Forms scheint das aber irgendwie komplizierter zu sein, vorallem was das visuelle Design angeht.
http://youtu.be/wz1cTgM9iEc
 
Wisst ihr zufällig eine gutes Handbuch, am besten wäre eine Video-Anleitung, die gibts zwar zu kaufen, aber bevor ich gleich 40€ ausgebe würde ich erstmal gerne die Grundlagen kennen und dann entscheiden, ob ich weiterlernen will.
Welche Sprache willst du den jetzt benutzen? Und falls du nicht bereit bist so um die 40-50€ auszugeben solltest du mal in einer, bei dir in der nähe liegenden, Stadtbibliothek gucken. Die habe oft eine ziemlich große Auswahl an solchen Büchern(von denen aber auch viele stark veraltet sind, also solltest du dich nach aktuelleren Ausgaben umsehen).

P-Froggy schrieb:
Als Alternative fällt mir noch ein Art Startcenter ein, da die Wortvorhersage doch etwas schwerer ist.
Das sollte dann einfach ein Vollbild-Programm sein, in dem sich eine vertikale Liste mit Programm und Dateiverknüpfungen befindet, als alternative zum Desktop also.
Wenns für so was in der Art eine Anleitung gibt, wäre ich glücklich. Als ich damals mit Flash gearbeitet habe, habe etwas ähnliches ziehmlich schnell hingekriegt, bei Windows Forms scheint das aber irgendwie komplizierter zu sein, vorallem was das visuelle Design angeht.
http://youtu.be/wz1cTgM9iEc

Warum verwirfst du deine Idee schon so schnell? Wenn du so an deine Projekte angehst wirst du niemals fertig. Welche Probleme sind denn bei deiner Planung aufgetaucht?
 
Jetzt mal vom Design abgesehen, würde ich die Wortvorhersage folgendermaßen umsetzen:
  1. Textfeld und Buttons für Buchstaben, Zahlen, Zeichen. Eventuell Umschaltbuttons für Groß- und Kleinschreibung sowie Zahlen und Zeichen, damit Du nicht hunderte Buttons benötigst.
  2. Benutzer drückt einen Button: Spätestens hier solltest Du die Wörter einlesen, die in Frage kommen.
  3. Benutzer drückt nächsten Button: Prüfen ob Textfeld leer (sollte eigentlich nicht sein!!) und ob letzter Button kein Leerzeichen war. Trifft beides zu: Der Benutzer schreibt wohl am Wort weiter -> Alle Wörter aus dem Array aussortieren, die nicht mit den bisherigen Buchstaben beginnen.
  4. Sobald Du nur noch X Wörter im Array hast, zeigst Du sie dem Benutzer, sodass er eines wählen kann.
Wie man das Interface aufbauen könnte, kannst Du dir ja bei unzähligen Smartphones und deren Apps abschauen. ;)
 
Hilfe beim StartCenter

Bis jetzt bin ich so weit gekommen, wie ihr im Anhang sehen könnt.
Das Quadrat ist beim Klicken animiert (es wird ein bisschen kleiner und grün) und lässt sich neu anordnen, indem man unten "Verschieben" auswählt und es dann herumzieht. Dabei wird es an einem Gitter ausgerichtet.

Nun ist meine Frage, wie ich den dafür geschriebenen Code für andere Panels geltend mache:
Dieser gilt nun nur für Panel1, er soll aber für ein beliebiges Panel gelten, da diese als später unbegrenzt erstellt werden sollen (Sie dienen als Programmverknüpfungen).


Hier ist der Code:
Code:
[FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]namespace
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] StartCenter[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
{

    
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]public[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]partial[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]class[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]Form1[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] : [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]Form[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]    {

        
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]public[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] Form1()[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
        {

            InitializeComponent();

        }


        
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]private[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] panel1_MouseDown([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]object[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] sender, [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]MouseEventArgs[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] e)[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
        {

            
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.BackColor = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]Color[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].Green;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
            
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.Size = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]Size[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.Width - 20, [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.Height - 20);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
            
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.Location = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]Point[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.Location.X + 10, [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.Location.Y + 10);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
            
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#008000][FONT=Consolas][SIZE=2][COLOR=#008000][FONT=Consolas][SIZE=2][COLOR=#008000]//this.panel1.Location = new Point(MousePosition.X, MousePosition.Y);[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][COLOR=#008000][FONT=Consolas][SIZE=2][COLOR=#008000][FONT=Consolas][SIZE=2][COLOR=#008000]
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]        }


        
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]private[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] panel1_MouseUp([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]object[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] sender, [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]MouseEventArgs[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] e)[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
        {

            
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.BackColor = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]Color[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].White;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
            
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] zLocationX = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.Location.X / 130;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
            
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] zLocationY = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.Location.Y / [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.Height;[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]

            
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.Size = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]Size[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.Width + 20, [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.Height + 20);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
            
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.Location = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]Point[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2](zLocationX * [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.Width + 10, zLocationY * [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.Height + 10);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
        }


        
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]private[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] panel1_MouseMove([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]object[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] sender, [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]MouseEventArgs[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] e)[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
        {

            
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] ([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].checkBox1.Checked == [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]true[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] && [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.BackColor == [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]Color[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].Green)[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
            {

                
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].panel1.Location = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]Point[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2](MousePosition.X - 55, MousePosition.Y - 110);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
            }

        }

    }

}
[/SIZE][/FONT][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    159,9 KB · Aufrufe: 173
Bis jetzt bin ich so weit gekommen, wie ihr im Anhang sehen könnt.
Das Quadrat ist beim Klicken animiert (es wird ein bisschen kleiner und grün) und lässt sich neu anordnen, indem man unten "Verschieben" auswählt und es dann herumzieht. Dabei wird es an einem Gitter ausgerichtet.

Nun ist meine Frage, wie ich den dafür geschriebenen Code für andere Panels geltend mache:
Dieser gilt nun nur für Panel1, er soll aber für ein beliebiges Panel gelten, da diese als später unbegrenzt erstellt werden sollen (Sie dienen als Programmverknüpfungen).

Dafür solltest du eine komplett neue Klasse(z.b. mit den Name StartIcon) schreiben. Da du ja die Klasse Panel als Grundlage nimmst solltest du deine Klasse am besten von Panel ableiten.

Jetzt aber mal zu was anderem: Hast du überhaupt verstanden was du da geschrieben hast? Da du ja die Sprache lernen willst halte ich es für keine gute Idee direkt mit der Programmierung der GUI zu beginnen. Am besten wäre es wenn du dich erst mal mit dem Konzept der Objektorientierten Programmierung auseinandersetzt.;)
 
Da du ja die Sprache lernen willst halte ich es für keine gute Idee direkt mit der Programmierung der GUI zu beginnen. Am besten wäre es wenn du dich erst mal mit dem Konzept der Objektorientierten Programmierung auseinandersetzt.;)

Das hab ich auch schon mehr oder weniger erwähnt, aber anscheinend hört niemand mehr auf mich.:lol:
 
  • Like
Reaktionen: EraZeR
Sehr schön, danke!

Trotzdem gibts noch was zu klären. Bisher dachte ich, dass ich als Projekt "Windows-Form" auswählen muss. Dass es dort aber nur sehr begrenzte visuelle Gestaltungsmöglichkeiten gibt, fand ich schon anfangs komisch.
Heute habe ich gemerkt, dass WPF viel eher das ist, was ich suche. Sollte ich dieses nehmen oder gibt es noch andere, die besser wären, also visuell mehr Gestaltungsmöglichkeiten und eine einfachere Handhabung? Die Programmiersprachen bleiben ja gleich.

Außerdem stellt sich die Frage, welche Programmiersprache nun am Besten für Windows-Anwendungen ist: Visual-Basic, C++, C# oder das neue F#?
Ich blick langsam nicht mehr durch was davon für was gut ist.
 
Visual Basic hat in meinen Bekanntenkreis eher den Ruf einer "Anfängersprache".
C++ ist alt aber sehr verbreitet, mächtig, erweiterbar und universell. C++ sollte man auch erweitern, wenn man denn schnell und effizient graphische Oberfläche zaubern möchte (z.B. mit MFC, wxWidgets, Qt, GTK, ...).
C# ist da neuer, benötigt aber das .NET-Framework und läuft nur (richtig) unter Windows-Betriebssystemen.
F# habe ich noch nie gehört. (Klingt gruselig)
 
Da du eh für Windows programmieren willst und schon Java-Kenntnisse hast, würde ich aus deiner Auswahl C# nehmen, da die Sprachen doch sehr ähnlich sind. Zudem kriegt man mit WPF/XAML schnell mal ne nette GUI hin. Was du letztendlich nimmst um dir die Grundlagen beizubringen, ist aber eigentlich egal - die sind sowieso bei den meisten Programmiersprachen gleich bzw. zumindest recht ähnlich.
 
Ich habe mir jetzt schon ein paar Kapitel durchgelesen und bin unterdessen recht weit mit meinem StartCenter-Programm gekommen.
Nun weiß ich aber nicht, wie man innerhalb einer selbsterstellten UserControl die Mausposition innerhalb des übergeordneten Containers abfrägt.
Beispiel zur veranschaulichung:
UserControl1 befindet sich in canvas1, nun soll von der UserControl aus die Mousposition in canvas1 abgefragt werden.
Mit "parent" scheint es nicht zu funktionieren.

Wenn ihr mir den Code geben könntet, wäre ich dankbar.