myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: Windows-Forms » Linie wie bei einem Bildbearbeitungsprogramm
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Linie wie bei einem Bildbearbeitungsprogramm

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München


progger ist offline

Linie wie bei einem Bildbearbeitungsprogramm

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Forum,

Ich denke jeder kennt diese linien bei Bildbearbeitungsprogrammen: Man kann sie auf ein Bild legen, wenn man die Maus über die Enden fährt, kommt ein Cursor zur Veränderung der Position des Punktes bzw der Länge und wenn man über die Linie fährt kommt ein Cursor zum Verschieben der ganzen Linie.

Hat jemand ne Ahnung, wie man sowas macht? Ich hab nämlich überhaupt keine. Ich muss wirklich wissen, wie man das MACHT. Eine Bibliothek in der sowas ist hilft mir nicht sooo viel, weil ich das noch meinen Bedürfnissen anpassen muss.

So weit, so gut. Ich freue mich über jede Antwort!
Grüße progger
21.09.2005 17:40 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
S.H.-Teichhof S.H.-Teichhof ist männlich
myCSharp.de-Mitglied

avatar-2460.jpg


Dabei seit: 03.10.2004
Beiträge: 1.549
Entwicklungsumgebung: #Developer
Herkunft: Sindringen


S.H.-Teichhof ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

unter  https://www.microsoft.com/germany/msdn/w.../bisherige.mspx findest du eine reihe von Webcasts die sich mit GDI+ befassen. müsste dir eigendlich helfen
21.09.2005 18:24 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo S.H.-Teichhof,

Erstmal danke für deine Antwort.
Kannst du mir noch was genaueres sagen? Ich weiß nämlich gar nicht, nach was ich suchen soll. Es geht auch von der Zeit her nicht, dass ich mir alle einzelnen Webcasts anschaue. Wie ich eine Linie zeichne weiß ich schon. Ich habe schon einiges mit GDI+ programmiert.
Mein Problem: Ich weiß nicht, wie ich mache, dass ich MouseEvents bei der Linie bekomme. Mehr Probleme fallen mir im Moment nicht ein, wird sich aber ändern wenn ich erstmal anfange großes Grinsen

Danke soweit,
progger
21.09.2005 18:35 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ikaros
myCSharp.de-Mitglied

Dabei seit: 27.05.2005
Beiträge: 1.739


ikaros ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

ich hatte mal ein einfaches Beispiel gepostet. Das wirft ein Ereignis wenn man über ein Drawobject mit der Maus fährt(im Bsp. sinds Linien). Code zum Verschieben und so weiter hinzuzufügen ist nur noch Fleissarbeit(btw für versch. Objecte Linien Ellipsen usw am besten via Interface).

 DrawLine MouseDown Event?
21.09.2005 18:41 Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo ikaros,

Vielen, vielen Dank für deine Antwort! Das hilft mir echt weiter. ich habs mir noch nicht genau angeschaut, sondern nur mal überflogen, sieht aber echt nach dem aus, was ich brauch. Wenn ich noch irgendwelche Fragen haben sollte, melde ich mich wieder.
Eine Frage, die mir gleich einfällt: Ist es nicht sehr auslastend für den PC, wenn ich für jedes dierser Objekte das MouseMove-Event des Parents abonnieren muss? Ich wüsste zumindest nicht wie ich es anders machen soll, dass ich ein MouseMove bzw. MouseDown Event für das Objekt auslösen soll.

Gruß progger
22.09.2005 19:43 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ikaros
myCSharp.de-Mitglied

Dabei seit: 27.05.2005
Beiträge: 1.739


ikaros ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Performanceprobleme ergeben sich tatsächlich bei sehr vielen Objekten, wenn bei jeder Mausbewegung überprüft wird welches Objekt darunter liegt. Sehe ich aber nicht so als Problem an, da in einem Zeichenprogramm normalerweise erst selektiert wird(Mouseklick), weiterhin wird bei sehr komplexen Zeichnungen auch mit Leveln gearbeitet. Probleme ergeben sich aber beim Verschieben(Neuzeichnung der Objekte(komplexere Grafiken mit Filtern/Farbverläufen und höherwertigen Transparenzverläufen(2.e Matrix) etc). Lässt sich aber auch in den Griff kriegen(da ja nicht jedes Objekt verändert wird, kann man einen Backgroundbuffer implementieren, und die zu refreshenden Bereiche eingrenzen. Es ist auch durchaus üblich beim Verschieben etc. nur eine vereinfachte Darstellung anzuzeigen. Die Neuberechnung aller(betroffenen) Objekte erfolgt dann am Schluss.
22.09.2005 20:05 Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo ikaros,

Nochmal vielen Dank für deine Hilfe! Ich habe noch was dazu zu sagen:
1. Das programm wird KEIN Bildbearbeitungsprogramm. Die Fläche auf der die Linien usw. sind ist einfarbig, also die Probleme, die du beim Neuzeichnen erwartest, treten nicht so ein.
2. Wie kann ich machen, dass es so wie ein Control behandelt wird? Geht das überhaupt? Ich hätte halt gerne, dass man über Controls.Add(...) und über den Form-Designer eine Linie einer Form oder so hinzufügen kann.

progger
23.09.2005 16:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.479
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo progger,

wenn es sehr wenige Objekte (also Linien u.ä) sind, könntest du vielleicht transparente PictureBoxen verwenden.

herbivore
23.09.2005 16:49 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke für deine Antwort, herbivore.
Was sind für dich sehr wenige Objekte?
23.09.2005 16:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.479
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo progger,

ich würde mal sagen so 10-20

herbivore
23.09.2005 17:01 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Dann mach ichs, glaub ich, doch anders. Oder gibt es noch ne andere Möglichkeit als mit den Pictureboxen?

Zitat:
Performanceprobleme ergeben sich tatsächlich bei sehr vielen Objekten, wenn bei jeder Mausbewegung überprüft wird welches Objekt darunter liegt.

Kann mir wer sagen, was hier "sehr viele" Objekte sind?
Vielen, vielen Dank soweit!
Gruß
23.09.2005 17:08 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ikaros
myCSharp.de-Mitglied

Dabei seit: 27.05.2005
Beiträge: 1.739


ikaros ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Sieht aus als würdest du ein Control für Linien benötigen(also ein anderer Schwerpunkt).

Ein LineControl könnte ungefähr so aussehen:


Dateianhang:
unknown Line.zip (3 KB, 653 mal heruntergeladen)
24.09.2005 16:16 Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das sieht schön aus! Vielen, vielen Dank.
Ich werde mal schaun, ob ich das meinem Bedarf anpassen kann.
Gruß progger
24.09.2005 16:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo nochmal,

Ich habs mir jetzt ein bisschen genauer angeschaut. Das ist genau das was ich suche!
Eine Frage hab ich noch: Wie mache ich eine Ellipse, die nicht gefüllt ist? ich habs jetzt mit GraphicsPath.AddEllipse() gemacht, da kann man aber im Gegensatz zu Graphics.DrawEllipse() nur gefüllte Ellipsen machen. Geht das irgendwie, dass ich noch den inneren Bereich festlegen kann?

Gruß und 1000 Dank, progger
24.09.2005 17:27 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich habs jetzt geschafft! Fragt mich aber bitte nicht wie ich drauf gekommen bin großes Grinsen
Ich habe es so geschrieben:

C#-Code:
GraphicsPath gp = new GraphicsPath();
GraphicsPath gp2 = new GraphicsPath();
Rectangle rect=new Rectangle(0,0,this.Width,this.Height);
Rectangle rect2=new Rectangle(2,2,this.Width-4,this.Height-4);

gp.AddEllipse(rect);
gp2.AddEllipse(rect2);
gp.AddPath(gp2,false);
this.Region = new Region(gp);

Kann mir bitte noch wer sagen, ob das richtig ist bzw ob es etwas einfacheres/besseres gibt, danke.
24.09.2005 17:37 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ikaros
myCSharp.de-Mitglied

Dabei seit: 27.05.2005
Beiträge: 1.739


ikaros ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Wie bist du darauf gekommen?
großes Grinsen
24.09.2005 20:21 Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Halo nochmal,

Ich bin jetzt auf einen kleinen Schönheitsfehler gestoßen:
Je nach dem Winkel der Linie ist sie unterschiedlich breit. Kann man irgendwie machen, dass sie immer gleich breit ist?
Noch was:
Wie mache ich am geschicktesten die Änderung der 2 Punkte? Ich würde überprüfen, ob die Maus am Rand der Linie ist. Wenn ja, wird die Linie nicht verschoben, sondern der Punkt, sodass die Linie länger/kürzer wird bzw. der Punkt sich ändert.

Ich freue mich über jede weitere Antwort!
Gruß, progger
01.10.2005 11:58 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ikaros
myCSharp.de-Mitglied

Dabei seit: 27.05.2005
Beiträge: 1.739


ikaros ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat:
Original von progger
Halo nochmal,

[quote]Ich bin jetzt auf einen kleinen Schönheitsfehler gestoßen:
Je nach dem Winkel der Linie ist sie unterschiedlich breit. Kann man irgendwie machen, dass sie immer gleich breit ist?

Ja, eine echte Linie zeichnen(ist auch besser für verschiedene Stile und Breiten). Den Selektionsbereich vergrössern(sieht bei Überlappungengen nicht gut aus, da keine echte Transparenz bei Controls) oder Punktweise errechnen(aus LinienMaske).

Zitat:
Noch was:
Wie mache ich am geschicktesten die Änderung der 2 Punkte? Ich würde überprüfen, ob die Maus am Rand der Linie ist. Wenn ja, wird die Linie nicht verschoben, sondern der Punkt, sodass die Linie länger/kürzer wird bzw. der Punkt sich ändert.

Beim Selektieren der Linie(markieren) würde ich 2 Endpunkte anzeigen, die beim Klicken und Ziehen das Control anpassen.

Ich freue mich über jede weitere Antwort!
Gruß, progger

Ich persönlich würde es nicht über Controls lösen, da derartige Lösungen beim Ansteigen von Anforderungen zu unflexibel sind(im graf. Bereich).
03.10.2005 20:51 Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo ikaros,

Wie würdest du es dann lösen? Mit deiner ersten Lösung, vermutlich. Das ist mir wiederum zu unflexibel (vielleicht kenn ichs auch nur nicht gut genug). Ich steh dann wieder vor diesem Problem:

Zitat:
Eine Frage, die mir gleich einfällt: Ist es nicht sehr auslastend für den PC, wenn ich für jedes dierser Objekte das MouseMove-Event des Parents abonnieren muss? Ich wüsste zumindest nicht wie ich es anders machen soll, dass ich ein MouseMove bzw. MouseDown Event für das Objekt auslösen soll.

Das wäre mit einem Control gelöst. Kannst du bitte auch mal sagen, was wann besser ist und wie du das mit der Unflexibilität genau meintest.

Vielen, vielen Dank soweit,
progger
04.10.2005 14:06 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.479
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo progger,

ich denke mal mit Unflexibilität ist gemeint, dass die Anzahl von Control stark beschränkt ist. Es gibt zum einen eine feste Grenze von 16k oder 64k Controls für alle Fenster zusammen und dann noch eine "Grenze" von vielleicht 500-1000 Controls ab der eine Anwendung sehr träge wird.

herbivore
04.10.2005 16:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ikaros
myCSharp.de-Mitglied

Dabei seit: 27.05.2005
Beiträge: 1.739


ikaros ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat:
Original von progger
Hallo ikaros,

Wie würdest du es dann lösen? Mit deiner ersten Lösung, vermutlich. Das ist mir wiederum zu unflexibel (vielleicht kenn ichs auch nur nicht gut genug). Ich steh dann wieder vor diesem Problem:

Zitat:
Eine Frage, die mir gleich einfällt: Ist es nicht sehr auslastend für den PC, wenn ich für jedes dierser Objekte das MouseMove-Event des Parents abonnieren muss? Ich wüsste zumindest nicht wie ich es anders machen soll, dass ich ein MouseMove bzw. MouseDown Event für das Objekt auslösen soll.

Das wäre mit einem Control gelöst. Kannst du bitte auch mal sagen, was wann besser ist und wie du das mit der Unflexibilität genau meintest.

Vielen, vielen Dank soweit,
progger

Ja persönlich ziehe ich die erste Lösung vor.
Wegen:
ich hatte mal einen Layouteditor(Drucklayouts für spezielle Hardware und sehr DB-Lastig) implementiert(mit Controls erst Pictureboxen, dann Umstieg auf Labels(Labels stellen sich manchmal als flexibler heraus)), dann kamen weitere Anforderungen hinzu und ich konnte 2 Wochen investieren zum Umstieg auf die rein graf. Lösung(allerdings hätte ich das gleich tun können, wenn ich die Zeit bekommen hätte, war aber kein Thema das gesamte Projekt wurde sehr sportlich angegangen). Dafür bekam ich (dann)auch die Zeit(Nach stundenlangen Meetings(die Zeit hätte ich gern anders genutzt) inkl Vorbereitung)
Die zusätzlichen Anforderungen hätten sich auch mit Controls lösen lassen(Echte Transparenz und farblich markierte Überlappungen von Elementen(es geht, aber Aufwand von Implementierung und Rechenaufwand steigen, eine eigene graf. Renderengine ist flexibler)
PC-Auslastung:
Nein, nicht wirklich(Wenn sich das BS drum kümmert heisst das nicht, dass Eigenimplementationen langsamer sind(Die Ereignisse von Controls müssen ja auch behandelt werden)
Flexibilität:
Siehe die Aussagen von Herbivore. Weiterhin können weitere Anforderungen hinzu kommen, die Controls einfach nicht leisten können. Bzw. wird die Abhängigkeit zur Implementation des containers immer grösser(wirst du selbst feststellen, auch wenn die Anwendung im Endeffekt simpel bleibt.

Der Vorteil von Controls besteht in ihrer fertigen Implementation(man muss sie nur benutzen, bis die Grenzen immer schwieriger zu überwinden sind). Der Vorteil von Grafischen Objekten besteht in höherer Flexibilität(und höheren Anfangsaufwand).
Zugegeben war das Beispiel sehr einfach, es ist aber auch einfach zu erweitern. Spätestens bei Transparenz oder Abhängigkeiten untereinander(Linie ist Verbinder zu Element(Schaltkreiseingang oder Klassenkomposition),sollte man drüber nachdenken.
Es kann natürlich sein das, für die Anforderung deiner Anwendung, Controls mehr als aussreichend sind.
Ich nehme mir auch gern die Zeit ein einfaches Beispiel für das Vergrössern/verkleinern/verschieben(ein Abwasch) von LineControls(anhand der geposteten Klasse) zu posten. Das aber nur wenn gewünscht und frühestens am WE. Die Sache mit der Darstellung bei unterschiedlichen Winkeln überlasse ich vorläufig deiner Fantasie(Hinweise gab ich).
04.10.2005 20:13 Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke für eure Hilfe!
Ich werde mich jetzt mal ein bisschen mit der rein grafischen Lösung beschäftigen. Ich würde mich aber trotzdem über ein Beispiel von dir freuen, ikaros. Damit ich seh wie du das löst.
Gruß progger
05.10.2005 14:57 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

*hochschieb*
Und ich möchte auch ikaros an sein Vorhaben erinnern. Aber nur, wenn du Zeit hast, natürlich! Ich freu mich schon drauf großes Grinsen
Gruß progger
08.10.2005 10:29 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ikaros
myCSharp.de-Mitglied

Dabei seit: 27.05.2005
Beiträge: 1.739


ikaros ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hab das WE anders verbracht, aber ich vergess es nicht. Versprochen.
09.10.2005 20:12 Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Schon in Ordnung. Ich freu mich weiter drauf (Vorfreude ist die schönste Freude großes Grinsen ).
progger
10.10.2005 11:29 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

*erneut hochschieb*
Es ist wieder WE, nur eine klitzekleine Erinnerung großes Grinsen
progger
15.10.2005 09:27 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,

Ich habe jetzt zwei Probleme:
1. Um einen Punkt zu machen, nehme ich eine Ellipse. Mein Problem ist, wenn ich GraphicsPath.AddEllipse(..) mache, zählt der nur den Rand der Ellipse. Sprich das mit dem MouseEvent (beachte Bsp. von ikaros  DrawLine MouseDown Event) klappt nur am Rand des Punktes. Weiß da jemand ne Möglichkeit? Ich bräuchte ne GraphicsPath.AddFilledEllipse-Methde, die gibts aber nicht unglücklich
2. Auch mit den MouseEvents. Wenn ich das Graphics-Objekt mit .PageUnit und .PageScale verändert hab funktionierts auch nicht mehr gescheit. Weiß da wer ne Möglichkeit, wie das korrekt funktioniert?
Ich freu mich über jede weitere Antwort.

Gruß,
progger
16.10.2005 14:47 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.479
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo progger,

Teilantwort:

Ich habe mich schon oben gefragt, warum du GraphicsPath.AddEllipse und nicht Graphics.DrawEllipse benutzt. Dann ist nämlich auch der Weg zu Graphics.FillEllipse nicht mehr weit.

herbivore
16.10.2005 18:18 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Weil ich das brauch um festzustellen, ob die Maus über dem Punkt ist. Beim zeichnen nehm ich auch Graphics.FillEllipse. GrraphicsPath hat das aber nicht unglücklich
16.10.2005 19:50 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.479
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo progger,

dann müsste Graphics.FillPath das sein, was du suchst.

herbivore
16.10.2005 20:02 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Du verstehst nicht was ich meine. Ich will nicht wissen, wie ich einen Kreis gefüllt zeichne, das weiß ich selbst, sondern, wie ich einen gefüllten Kreis in das GraphicsPath-Objekt bekomme. Ich brauche den um festzustellen, ob die Maus über dem Kreis ist, sprich um ein MouseMove-Ereigniss auszulösen. Schau dir dazu am besten  hier ikaros Beispiel an, so möchte ich es machen.
Ich hoffe ich hab dich nicht noch mehr verwirrt fröhlich

Gruß,
progger
17.10.2005 12:33 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.479
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo herbivore,

genau so wie du es beschreibst, hatte ich es verstanden und ich denke, dass Graphics.FillPath das sein müsste, was du suchst.

herbivore
17.10.2005 18:18 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Dann steh wahrscheinlich ich aufm Schlauch cool
Was sollte das denn bewirken? Ich habs vorsichtshalber mal getestet, bringt aber nicht das was ich brauch.
17.10.2005 19:22 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.479
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo progger,

Zitat:
Was sollte das denn bewirken?

Fills the interior of a GraphicsPath object.

Ich habe jetzt aber mal weiter gelesen und siehe da, die Beschreibung ist irreführend, da gar nicht das Innere des GraphicsPath gefüllt wird, sondern das Innere des durch das GraphicPath-Objekt bestimmten Bereichs auf der mit dem Graphics-Objekt verbundenen Zeichenfläche.

herbivore
17.10.2005 19:37 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.479
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo progger,

nächster verschärfter Versuch. ikaros benutzt GraphicsPath.IsOutlineVisible. Was du suchst müsste demnach GraphicsPath.IsVisible sein.

herbivore
18.10.2005 00:03 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
cx°
myCSharp.de-Mitglied

avatar-1921.jpg


Dabei seit: 18.05.2005
Beiträge: 190


cx° ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

hallo progger,

wenn ich den thread jetzt richtig überfolgen habe, willst du wissen welches grafische objekt du angeklickt hast. wenn das so ist, dann schau dir mal folgendes projekt an:

 codeproject.com -> ImageMap


cx°
18.10.2005 07:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,

@herbivore: DANKE!! Das ist genau das, was ich gesucht habe. Ich versteh jetzt auch was dich zu der vorigen Antwort verleitet hat großes Grinsen
@cx°: Danke, das sieht ganz gut aus, ich schaus mir grad an. Vielleicht kann ich da auch noch was einbauen.

Gruß progger
18.10.2005 17:38 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo nochmal,

Ich hab jetzt immer noch ein ziemliches Problem: Ich möchte über Graphics.PageScale so eine Art Zoom einbauen. Leider funktioniert dann GraphicsPath.IsVisible und .IsOutlineVisible nicht mehr. Dasselbe ist, wenn ich PageUnit veränder. Gibt es irgendeine Möglichkeit, dass das trotzdem geht. Ich bin über jede Antwort froh, weil ich echt nicht mehr weiter weiß.

Gruß,
progger

//EDIT:
Nochwas: Ich habe ein eigenes Control, in dem ich alles darstelle. In dem rufe ich das hier auf:

C#-Code:
            this.SetStyle(ControlStyles.AllPaintingInWmPaint|ControlStyles.UserPaint|ControlStyles.DoubleBuffer,true);

AllPaintingInWmPaint verhindert aber, dass ich PageScale überhaupt verändern kann (vermute ich mal). Wenn ich das aber nicht mach flimmert die Darstellung total. Gibt es da ne Möglichkeit, dass das trotzdem geht?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von progger am 21.10.2005 17:15.

21.10.2005 17:03 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.479
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo progger,

im Zweifel musst du einen neuen GraphicsPath in der veränderten Größe erstellen. Ob es noch was besseres gibt, weiß ich nicht.

herbivore
21.10.2005 17:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Mitglied

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München

Themenstarter Thema begonnen von progger

progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das klingt ganz gut. Ich probier gerade damit rum. Ich sag, dann obs/wies geklappt hat. Ich freu mich aber trotzdem noch über jede weitere Idee.
progger
21.10.2005 18:25 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 15 Jahre.
Der letzte Beitrag ist älter als 14 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 23.09.2020 07:32