Laden...

Linie wie bei einem Bildbearbeitungsprogramm

Erstellt von progger vor 18 Jahren Letzter Beitrag vor 18 Jahren 27.457 Views
progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren
Linie wie bei einem Bildbearbeitungsprogramm

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

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

1.549 Beiträge seit 2004
vor 18 Jahren

unter https://www.microsoft.com/germany/msdn/webcasts/bisherige.mspx findest du eine reihe von Webcasts die sich mit GDI+ befassen. müsste dir eigendlich helfen

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

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 😁

Danke soweit,
progger

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

I
1.739 Beiträge seit 2005
vor 18 Jahren

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?

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

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

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

I
1.739 Beiträge seit 2005
vor 18 Jahren

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.

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

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

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo progger,

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

herbivore

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

Danke für deine Antwort, herbivore.
Was sind für dich sehr wenige Objekte?

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo progger,

ich würde mal sagen so 10-20

herbivore

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

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

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ß

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

I
1.739 Beiträge seit 2005
vor 18 Jahren

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:

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

Das sieht schön aus! Vielen, vielen Dank.
Ich werde mal schaun, ob ich das meinem Bedarf anpassen kann.
Gruß progger

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

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

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

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

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.

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

I
1.739 Beiträge seit 2005
vor 18 Jahren

Wie bist du darauf gekommen?
😁

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

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

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

I
1.739 Beiträge seit 2005
vor 18 Jahren

Original von progger
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?
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).
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).

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

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:

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

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

49.485 Beiträge seit 2005
vor 18 Jahren

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

I
1.739 Beiträge seit 2005
vor 18 Jahren

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:

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).

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

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

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

*hochschieb*
Und ich möchte auch ikaros an sein Vorhaben erinnern. Aber nur, wenn du Zeit hast, natürlich! Ich freu mich schon drauf 😁
Gruß progger

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

I
1.739 Beiträge seit 2005
vor 18 Jahren

Hab das WE anders verbracht, aber ich vergess es nicht. Versprochen.

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

Schon in Ordnung. Ich freu mich weiter drauf (Vorfreude ist die schönste Freude 😄).
progger

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

*erneut hochschieb*
Es ist wieder WE, nur eine klitzekleine Erinnerung 😁
progger

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

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 🙁
  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

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

49.485 Beiträge seit 2005
vor 18 Jahren

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

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

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 🙁

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo progger,

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

herbivore

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

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 =)

Gruß,
progger

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

49.485 Beiträge seit 2005
vor 18 Jahren

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

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

Dann steh wahrscheinlich ich aufm Schlauch 8)
Was sollte das denn bewirken? Ich habs vorsichtshalber mal getestet, bringt aber nicht das was ich brauch.

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo progger,

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

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo progger,

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

herbivore

190 Beiträge seit 2005
vor 18 Jahren

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°

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

Hallo zusammen,

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

Gruß progger

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

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:

			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?

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

49.485 Beiträge seit 2005
vor 18 Jahren

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

progger Themenstarter:in
1.271 Beiträge seit 2005
vor 18 Jahren

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

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.