Laden...
C
CarstenS87 myCSharp.de - Member
Student Braunschweig Dabei seit 22.04.2013 12 Beiträge
Benutzerbeschreibung

Forenbeiträge von CarstenS87 Ingesamt 12 Beiträge

18.06.2013 - 16:07 Uhr

Sorry, aber entweder ist das ein Missverständnis oder ein rumreiten auf Kleinigkeiten die eigentlich vollkommen unbedeutend sind (daher fühle ich mich leider auch gerade etwas auf den Arm genommen 😦 ).

Was das eigentliche Vorhaben angeht, ja. eine Grafik in WPF darstellen und die Farbe der Grafik mit Texturen und anderen Farben versehen.

Wieso ich darauf komme das der Pfad in XAML nicht gezeichnet wird? Weil es dort keinerlei Zeichen-Methoden gibt, sondern feste Objekte, die bestimmte Formen annehmen können.

In c# hingegen gibt es spezielle Draw-Methoden. Ich hab ja nicht gesagt, dass man das in XAML nicht darstellen kann...

Und was den Pfad angeht, der hat rein gar nichts mit XAML zu tun 😉

daß du dir eine PNG-Datei im Illustrator in ein XAML-Pfad umwandeln läßt

Das ist eins der Hauptelemente aus dem Bereich der skalierbaren Vektorgrafiken...

Und was die Unterschiede zwischen XAML und den System.Drawing funktionen angeht, ich denke die kenne ich mehr als genug.

Liebe Grüße Carsten

P.s.: Sorry falls der Text etwas griffig klingt....

18.06.2013 - 14:00 Uhr

Hey Christian,

in WPF habe ich die Möglichkeit mit dem Pfad-Objekt aus dem Shape-Namespace einen Pfad direkt darzustellen, diesen liefere ich als Points-Array oder als Zeichenfolge. Am ende ergibt dies ein Pfad-Objekt, dass wie ein Rectangle oder eine Ellipse direkt im WPF-Fenster angezeigt wird.

Die Alternative ist den Pfad richtig zu zeichnen (was meines Wissens nur mit dem System.Drawing-Namespace möglich ist).
D.h. ich habe mein Graphics-Objekt, dass ich aus ner Bitmap oder einem anderen möglichen Objekt erstelle (was letztendlich nur dazu dient, dass das gezeichnete irgendwo angezeigt werden kann, bzw. gespeichert wird).
Hier gibt es 2 Methoden: DrawPath (zeichnet nur die Umrandung) und FillPath (zeichnet die Umrandung gefüllt mit einem Texturebrush).

Da ich die Form mit variablen Texturebrush-Objekten füllen möchte muss ich also die FillPath-Methode nehmen.

Und das Problem ist nun, dass die Draw-Methoden für Pfad-Objekte keine Zeichenfolgen annehmen um den Pfad zu definieren sondern nur PointF-Array's.


Mit der Flatten-Methode kannst du leider nur bei einem vorhandenen GraphicPath die Kurven in Linien umwandeln, sprich den Pfad abflachen.


Aber gerne erklär ich das nochmal genauer:

Ich habe eine "Armband.png" mit einem Uhrenarmband - nur das Armband - der Rest der Uhr ist nicht in der Datei abgebildet (dafür existieren weitere *.png).
Nun möchte ich dieses Armband in meinem Programm darstellen und die Farbe verändern können. D.h. ich kann kein Image nehmen das angezeigt wird (oder nur bei Volltonfarben und da dann mit get- und set-pixel arbeiten) und andere Shapes außer Path-Objekten gehen auch nicht (wegen der Form).
Also wandel ich den Inhalt der "Armband.png" mit Adobe Illustrator in einen Pfad um und diese Pfad-Zeichenfolge kann ich mir dann einfach mit nem System.Windows.Shapes.Path-Objekt anzeigen.

Daher habe ich die Zeichenfolge. Wenn ich wüsste ob und wie das geht, kann ich aber auch das Armband aus der png in nen point-array oder sonst was (mögliches) umwandeln, um es im c# code nutzen zu können.

ich hoffe ich habe es etwas deutlicher machen können.

Liebe Grüße und herzlichen Dank

Carsten

18.06.2013 - 10:57 Uhr

Danke Th69 für den Link. Auf den war ich bei meiner Google Suche auch schon gestoßen, nur scheint der nicht 100% zu funktionieren, so wie ich da bisher durchgestiegen bin.

Ich schaue nebenbei schon nach einer Alternative, die Pfad in Points umzuwandeln 😕

Ursprünglich steht mir das Bild ja in nem PNG zu verfügung, d.h. wenn ich einen anderen Weg finde es exakt zu zeichnen, dann lasse ich auch gerne vom Pfad ab ^^

18.06.2013 - 09:21 Uhr

nein das geht leider nicht, denn die konvertierung von einem media.geometry in drawing2d.graphicpath.pathdata ist nicht möglich 😦

zusätzlich kann der graphicspath.pathdata nichts zugewiesen werden (dient nur zum abrufen)

18.06.2013 - 08:41 Uhr

Hallo gfoidl,

das ist richtig, aber auch dafür muss ich die Zeichenfolge in den FillPath (GraphicPath) wandeln.

LG Carsten

17.06.2013 - 23:05 Uhr

Hey ihr Lieben,

ich bräuchte mal wieder einen Rat 😕

und zwar habe ich eine Zeichenfolge die einen Pfad darstellt

"M28.93,3.399c2.771,7.002,8.941,10.605,19.121,10.198c0,3.399,0,6.798,0,10.198c-16.07-0.944-12.055,..."

Im XAML-Code kann ich ja einfach nen Path-Objekt erstellen und die Zeichenfolge als Data reinsetzen und alles ist gut.

Jetzt muss/möchte ich aber mit FillPath, den Pfad in eine Bitmap zeichnen und da kommt das Problem.

FillPath erwartet einen GraphicsPath.... kann mir jemand sagen, wie ich die Zeichenfolge "konvertieren" kann oder wie ich die 2 Seiten zusammen bekomme?

Ich bin für jede Hilfe dankbar 😃

Liebe Grüße Carsten

02.06.2013 - 16:03 Uhr

Hey ihr Lieben,

ich hoffe ich hab kein Thema übersehen bei der Suche aber ich hab folgende Frage.

Ich habe ein Path-Objekt und würde dieses gerne aussehen lassen wie Leder.

Ich würe am liebsten die Form einfach per "Fill" mit der jeweiligen Farbe füllen und dann einfach ne "Leder-Textur" drüber legen.

  1. Frage: Kann ich das so machen?

  2. Frage: Nutze ich dafür dann den TextureBrush bzw. wenn ja an welche Eigenschaft muss ich den dan dran hängen?

Ich danke schonmal für die hilfreichen Antworten

Liebe Grüße Carsten

06.05.2013 - 13:18 Uhr

Derzeit habe ich das ganze so gelöst, das ich eine statische Ebene habe in der Schatten und Reflektionen liegen.
So können die 8 anderen "Ebenen (Bauteile)" komplett in einer Farbe vorliegen.

Derzeit stehen dem Benutzer 48 Farben (die durch den Hex-Code vorgegeben sind) zur Verfügung, in die jede Ebene geändert werden kann.

Beispiel: Bauteil A ist standardmäßig grün. Der Kunde möchte das jedoch Lila haben, also klickt er auf Lila und das Bauteil wird umgefärbt.

Ich hatte mich am Anfang auch mit der Color-Matrix auseinander gesetzt, sah dort aber das Problem, dass die Farbauswahl eher eingeschrenkt ist, oder?

06.05.2013 - 12:59 Uhr

Hey Leute,

der Titel klingt ein wenig komisch aber ich habe folgende Situation.

Ich habe in meinem Programm ein Produktbild, welches bei Laufzeit aus 9 *.png geladen wird.
Diese 9 "Bauteile" bilden zusammen eine Armbanduhr.

Ich arbeite derzeit mit der get-/setPixel Methode um bei den einzelnen Bauteilen die Farben je nach Wunsch zu ändern. Soweit funktioniert das ganze auch ganz gut, wobei ich die Performance sicherlich nocht durch GetPixel und SetPixel um Längen geschlagen. 800 mal schneller verbessern kann.

Nun stellt sich mir jedoch die Frage, ob es noch einen anderen, vielleicht besseren Weg gäbe, als mit der get-/setPixel Methode und 9 einzelnen Bildern zu arbeiten. Zum Beispiel mit einer Art Modell, in dem verschiedene "Areale" festgelegt sind, die jeweils ein Bauteil darstellen?

Liebe Grüße und danke für Ideen Carsten

06.05.2013 - 12:43 Uhr

Sodelle, nun wollte ich doch nochmal fix die Auflösung Posten.

Ich habe einfach in mein Grid die neuen Button in der Laufzeit als Children eingefügt. Das ganze funktioniert nun wunderbar. 😃

22.04.2013 - 15:01 Uhr

Hallo MichlG,

danke für deine schnelle Antwort.

Also die ProgressBar würde ich nur sehr ungerne nutzen, da die "optische Trennung" in einzelne Schritte recht wichtig ist.

Der Vorschlag mit dem ItemsControl klingt sehr interessant, ich lese mich gerade mal schlau, wie ich das damit realisieren kann.

Danke und Liebe Grüße

22.04.2013 - 14:17 Uhr

Hey Leute,

ich hoffe das ich den richtigen Bereich gefunden habe, aber ich denke schon.

Und zwar habe ich follgendes Problem. Wir programmieren derzeit einen Produktkonfigurator mit c# in WPF und ich möchte im Konfigurationsprozess einen "roten Faden" bieten.

Nehmen wir an mein Produkt hat 8 Bauteile und für jedes Bauteil gibt es ein kleines Quadrat.
Diese Quadrate werden nebeneinander angezeigt und das aktive Bauteil wird anders eingefärbt.
(so wie man eigentlich bei den meisten Konfiguratoren sehen kann)

So kann ich sehen, in welchem Schritt ich mich gerade befinde. Da aber nicht jedes Produkt die gleiche Anzahl von Bauteilen hat, würde ich gerne bei der Auswahl eines Produktes nur die entsprechende Anzahl (vorhandener Bauteile) von "Schritt-Quadraten" einblenden.

Nun stehe ich aber vor dem Problem, dass ich absolut auf dem Schlauch stehe und nicht weiß, mit welchen Elementen ich eine Solche variable Statusanzeige realisieren kann.

Die einzelnen Schritte liegen als Usercontrol vor und mein erster gedanke, ich brauch doch einfach nur nen weg, eine bestimmte anzahl von UC's in einem Grid oder so einzublenden und anzuordnen.

Es wäre super, wenn ihr mir vielleicht helfen könntet und ich hoffe ich hab mein Problem halbwegs verständlich beschrieben.

Danke schonmal für eure Gedanken, liebe Grüße Carsten