Ok, danke für das Feedback. Dann wird das mit den 30€-Angeboten wohl nicht so legal sein, wie die behaupten. Das sind etliche Seiten, die aber ähnlich aufbebaut sind, vermutlich gehören die dem selben "Veranstalter"...
Gibt's eigentlich die Premium-Edition nur mit dem MSDN-Abo? Pro gibt's ja auch ohne. Nur so aus Interesse. Ich muss dann eh erstmal klären, welche Edition wir brauchen. Das kann noch eine Weile dauern, aber jetzt weiß ich schonmal mehr.
Hallo,
ich bin grad am überlegen, wo man als einzelner Entwickler oder für kleine Teams am besten Visual Studio 2013 herbekommt. Einerseits gibt es ja die Retail-Packungen mit Medium für 500 € (Professional) oder 7000 € (Premium + MSDN). Zu finden im Preisvergleich bei einigen deutschen Händlern. Dann finde ich aber diverse dubiose Webseiten, auf denen man Product Keys für Pro/Prem/Ultimate für etwa 30 € kaufen kann, ohne Medium, teilweise mit Download-Link. Das sollen alles Originalschlüssel sein.
Dieser Preisunterschied ist ja enorm. Aber wenn man weiß, dass OEM-Versionen von Windows oder Office auch bloß wenige Euro kosten und VS in manchen Abos und für manche Zielgruppen kostenlos dabei ist, scheint das Angebot nicht ganz abwegig.
Wer kennt sich mit dieser unübersichtlichen Lage aus und kann mir empfehlen, was ich woher bekomme? Es geht nur um VS 2013, keine älteren Versionen, und nur in Professional oder Premium. Eine MSDN-Subscription für Windows, Office etc. wird nicht benötigt. Und eine DVD eigentlich auch nicht, ein ISO-Image zum Herunterladen ist genauso gut.
Hallo,
ich möchte eine neue Anwendung erstellen und bin mir unsicher, ob ich Windows Forms oder WPF verwenden soll. Mit Windows Forms kenne ich mich aus, und ich weiß auch, was alles nicht ordentlich funktionieren wird. Von WPF habe ich nur Grundlagen-Ahnung, d.h. ich habe alle Konzepte mal gesehen, könnte sie aber nicht auswendig hinschreiben oder sinnvoll einsetzen. WPF ist ja irgendwie wahnsinnig kompliziert, nicht nur die Konzepte sondern auch die vielen neuen Sprachen (XAML, {Binding}-Schreibweise usw.).
Was mir bei Windows Forms an komplexen Oberflächen gar nicht gefällt ist, dass es flimmert. Wenn ich ein paar Layout-Panels verwende und dann in einer Tabelle eine Zeile ein- oder ausblende, dann rutscht der Rest hoch oder runter, alles wird neu gezeichnet, und erst dann wird die Größe der verrutschten Controls an den neuen Platz angepasst. Oder ein abgeleitetes Panel zeichnet zuerst die Hintergrundfarbe und lässt an den Stellen, wo noch ein Label hinkommt, die Farbe stehen, und irgendwann kommt dann auch das Label auf den Schirm. Das sieht alles sehr unschön aus.
Da WPF ja zuhauf dieser Effekte und Verschachtelungen verwendet, außerdem alles animieren kann, da vermutlich ein völlig neu entwickeltes Darstellungskonzept (kein WM_PAINT mehr) zum Einsatz kommt, und noch dazu alles irgendwie GPU-beschleunigt sein soll, habe ich die Hoffnung, dass derartige Flimmereffekte bei WPF nicht mehr auftreten. Mangels jeglicher Erfahrung kann ich das aber aktuell nicht prüfen. Wer kennt sich damit aus?
Außerdem dauert es extrem lange, wenn ich viel Text abmessen muss, um in einer Tabelle die Spalten automatisch zu verbreitern. DataGridView mit AutoSize-Columns und ein paar tausend Zeilen sind nicht mehr interaktiv. Geht das mit WPF schneller?
Welche Vorteile habe ich denn sonst mit WPF gegenüber WinForms? Bessere OpenType- und Unicode-Unterstützung bei der Textdarstellung hab ich mal gelesen. Die ganzen tollen Animationen. Noch irgendwas nützliches, wichtiges?
Und wo finde ich verständliche Tutorials, die mir Data Templates, Data Binding und die Event-Geschichten erklären? Was Google bislang so gefunden hat, hat mich immer mit vielen Fragezeichen zurückgelassen. Teilweise war der Code auch sehr unvollständig, so dass ich nichtmal selbst experimentieren konnte. Außerdem verwenden da draußen scheinbar alle VS2008, von VS2010/.NET 4 sieht man kaum etwas.
Hallo,
Ich mache mir derzeit ein paar Gedanken darüber, eine Anwendung zu schreiben, die mit größeren Mengen an Vektorgrafiken arbeitet. Die Grafiken werden nach bestimmten Stilen dargestellt und können wie in einem Zeichenprogramm bearbeitet, gezoomt usw. werden. Manche der Objekte sind klein, manche können sehr groß sein und müssen dementsprechend am Viewport beschnitten werden. Außerdem müssen Texte an Pfaden entlang dargestellt werden, das sollte also möglichst einfach realisierbar sein.
Die Programmoberfläche (also das um den Zeichenbereich herum) sollte möglichst schick und modern aussehen. (Das kann man jetzt mit dem Aero-Stil hinbekommen oder alles in einem dunkleren "Graphit"-Design machen, bin ich offen.)
Dabei muss aber die Performance von allem gut sein. Es darf nicht ständig irgendwo hakeln und ruckeln. Und wenn das Rein- und Rauszoomen noch flüssig animiert werden kann (so ähnliche wie z.B. bei Google Maps im Browser), wär's umso besser.
Ich kenne mich mit Windows Forms ganz gut aus und habe da schon einiges mit aufwändigem Zeichencode erstellt. WPF und DirectX sind mir ziemlich fremd, ich kenne zwar die theoretischen Konzepte, habe aber keine praktische Erfahrung damit.
Ich habe nun etwas gegoogelt und dabei kam raus, dass WPF wohl noch so einige Fehler hat und die Performance noch recht unausgegoren sein soll, gerade was die CPU-GPU-Schnittstelle angeht. Es beschweren sich wohl viele über unzureichende Performance mit WPF und erst recht mit 3D. Das Direct2D-API soll wohl besser sein, scheint aber noch sehr neu zu sein und nicht so einfach für .NET verfügbar.
Was verwende ich nun am besten? WPF für alles? WPF und Direct2D? WinForms für alles? WinForms und Direct2D oder ein anderes DirectX? OpenGL? Wer hat da ein paar Hinweise für mich?
Und wenn Du genau mit dieser Fehlermeldung suchst (z.B: Google) dann findest Du auch den Grund...
Sorry, dieser Beitrag war nicht hilfreich. Nach einigen Suchergebnissen der deutschen und englischen Formulierung des Fehlers habe ich keine Information gefunden, die du gemeint haben könntest.
Ich habe vorerst eine andere Lösung gefunden. In OnPaintBackground verwende ich VisualStyleRenderer.DrawParentBackground, um den Hintergrund zu zeichnen. Das funktioniert zumindest in Windows 7 mit allen Levels von Themes (von Glass bis ganz aus) und in TabPages und direkt in Forms. Der Code sieht dann so aus:
protected override void OnPaintBackground(PaintEventArgs pevent)
{
if (VisualStyleRenderer.IsSupported)
{
// The VisualStyleElement does not matter, we're only drawing the parent's background
VisualStyleRenderer r = new VisualStyleRenderer(VisualStyleElement.Window.Dialog.Normal);
r.DrawParentBackground(pevent.Graphics, ClientRectangle, this);
}
else
{
base.OnPaintBackground(pevent);
}
}
Seit wann unterstützen Windows-Forms-Controls denn echte Transparenz? Soweit ich weiß, muss jedes Control sein eigenes Rechteck vollständig zeichnen, sonst bleiben dort Fragmente stehen oder es wird schwarz.
Beim Versuch, BackColor auf Transparent zu setzen, bekomme ich folgende (bekannte) Fehlermeldung: "Das Steuerelement unterstützt keine transparenten Hintergrundfarben."
Ich habe ein user control das transparente Bereiche im Hintergrund hat. (Es soll zumindest so aussehen.) Die OnPaintBackground-Methode habe ich nicht überschrieben, es wird also immer der graue Hintergrund angezeigt. Wenn ich das Control jetzt aber in einer TabPage einfüge, ist der Hintergrund ja nicht grau, sondern weiß. Mein Control hat aber immer noch den grauen Hintergrund. Wie bekomme ich das jetzt hin, dass sich der Hintergrund des UserControls nach dem des Parent richtet?
Erschwerend kommt vllt. noch hinzu, dass sich das UserControl in einem anderen CustomControl und dort in einem TableLayout befindet. Das ändert aber alles nichts an der Hintergrundfarbe des Tabs.
(Windows 7 mit dem Aero-Theme, sollte aber auch XP Luna betreffen)
Also, danke für die Links, aber da war leider nichts neues dabei.
Ich hab nun noch etwas weiter gefrickelt und hab zumindest rausgefunden, wie man richtig zeichnen kann. Dazu braucht man folgendes:
protected override void OnPaintBackground(PaintEventArgs pevent)
{
pevent.Graphics.Clear(Color.FromArgb(0));
}
Danach hat man eine saubere leere Glass-Fläche, auf die man dann mit den gewohnten Zeichenmethoden zeichnen kann (Linien, Flächen, Bilder, alles kein Problem, auch schwarz).
Übrig bleibt nur noch der Text. Mit TextRenderer sieht man sehr wenig bis gar nichts, je nach eingestellter Farbe. In keinem Fall aber das, was man will. In folgendem Screenshot sind jetzt untereinander folgende Text-Darstellungsmethoden gezeigt:
* DrawThemeTextEx (ohne Glow; mit käme das raus, was man erwarten würde)
* Graphics.DrawString
* TextRenderer.DrawText
Im 2. Bild passt der Text nicht rein, weil ich mit TextRenderer.MeasureText ausmesse und nicht mit Graphics.sonstwas. Da sieht man auch, dass der Text größer wird.
Ich hab nochmal weiter gesucht, aber ich find einfach keinen Beispielcode, der irgendwas in Client-Glas zeichnet. Ich finde nur Artikel darüber, wie man dort WinForms-Controls reinsetzen kann, aber nichts selbstgezeichnetes. Davon sehe ich immer nur Screenshots, aber keinen Code.
Meine Probleme sind jetzt konkret folgende:
* Was muss ich im Hintergrund zeichnen (OnPaintBackground)? Wenn ich in der Methode gar nichts mache, wird großer Müll angezeigt aber es ist zumindest stellenweise das Glas zu sehen. Beim Neuzeichnen bleiben natürlich Reste des vorherigen Inhalts stehen. Wenn ich schwarz oder BackColor fülle, ist genau diese Farbe zu sehen aber kein Glas. Wenn ich Transparent fülle, hat das den gleichen Effekt, wie wenn ich gar nichts in der Methode mache. Wenn ich die Methode nicht überschreibe, ist es als ob ich in BackColor füllen würde.
* Wie bekomme ich schwarzen Text sichtbar? Ich möchte wirklich sehr gerne den TextRenderer verwenden, weil das die einzige Möglichkeit ist, Text so zu zeichnen, wie das der Rest von Windows auch tut. Mit Graphics.DrawString sieht es immer ein kleines bisschen anders aus. Und mit Label-Controls wollte ich da jetzt nicht anfangen, zumal die intern auch nur den TextRenderer verwenden (laut Reflector).
Ich weiß nicht, ob das so gut rübergekommen ist, aber so soll es mal aussehen:
Edit: Dass die Tabs hier in der Caption Bar drinstecken, brauche ich nicht. Das wird wohl nochmal ne Ecke komplizierter und unter XP ist dann eh Schluss. Aber wenn die Tabs bei mir so aussehen würden, wär das toll.