Laden...

Forenbeiträge von Löwenherz Ingesamt 58 Beiträge

20.04.2006 - 10:06 Uhr

Oh, ein Leidensgenosse 😉

Genau an dieser Baustelle bagger ich auch gerade rum. Bei mir kommt noch hinzu, dass ich das Child-Window gerne immer on top des Parent-Fensters hätte, so wie eine Toolbar.

Hat jemand da vielleicht einen Tipp, wie man das machen könnte?

Vielen Dank 🙂

19.04.2006 - 12:21 Uhr

Vielen Dank für die schnelle Antwort!

Werde ich gleich mal testen 🙂

Allerdings ist die Kernfrage noch offen... Wie kriege ich den Clientbereich geändert?

19.04.2006 - 11:18 Uhr

Schau dir mal die Funktion

System.IO.File.Delete(string path);

an. Die tut eigentlich genau das, was du willst 🙂

19.04.2006 - 11:15 Uhr

Hallo Leute 🙂

Ich habe das Forum zwar durchforstet, eine Lösung zu meinem Problem habe ich leider noch nicht gefunden.

Ich habe ein von Usercontrol abgeleitetes Steuerelement gebastelt, das ein Bild anzeigt (Ich weiß, geht auch mit PictureBox 😉 aber da ist noch mehr drin ^^). Als ich nun eine Zoom-Funktion einbauen wollte, habe ich Probleme mit der Autoscrollbar bekommen und habe mich entschieden, zwei separate Scrollbars zu benutzen. Mein Problem ist nun, dass ich nicht so recht weiß, wie ich den Clientbereich einschränke, so dass die Scrollbars nicht mehr inbegriffen sind. Das ist beim Zeichnen ein echtes Handycap.

Zu allem Überfluss wird das Steuerelement auch noch resized, womit sich der Clientbereich laufend ändern kann.

Vielen Dank schonmal im vorraus für eventuelle Tipps 🙂

13.04.2006 - 10:58 Uhr

Wenn du die Offsetwerte berechnet hast, kannst du in OnPaint() ja darauf reagieren und dein Bild etwas versetzt zeichnen. War es das, was du meintest?

11.04.2006 - 09:41 Uhr

Ich danke euch 🙂

Hab das Problem gelöst. Ich zeichne nun den Rahmen mit DrawRectangle und invalidiere dann beim "Löschen" des Rahmens nur das entsprechende Stückchen des Bildes, damit es nicht so flackert.

10.04.2006 - 22:18 Uhr

@herbivore
Oops, ich bin noch ziemlicher Anfänger bei .NET und habe die Scrollbarkeit der Picturebox bisher nicht rauskitzeln können. Wenn die Bilder zu groß wurden, wurden sie einfach abgeschnitten. Eine Scrollbar gab es da nicht.

Die Funktion der Paint-Methode ist mir von der MFC her noch bekannt. Sie wird ja immer zum Neuzeichnen eines Bildes aufgerufen. Wenn man aber DrawReversibleFrame benutzt, zeichnet Windows scheinbar direkt nicht in den Bildspeicher, der zum Steuerelement gehört, sondern etwas globaler 😉 Ich kann damit sogar auf dem Desktop rumkritzeln, wenn ich will. Clipping gibt es für die Methode nicht. Wenn ein Fenster über meinem Applikationsfenster liegt und ich in das Applikationsfenster reinmale, geht die Ausgabe in das darüber liegende Fenster und macht es etwas "schmutzig". Ich hoffe, es ist etwas klarer geworden, was ich meine 🙂

Wenn ich mit den Mouse-EventHandlern einen Fangrahmen aufziehe, will ich nicht jedesmal mit Invalidate() die Paint-Methode anstoßen, daher habe ich in den Handlern den Fangrahmen gemalt. Invalidate() führt bei häufigem Aufruf zum Flackern des Bildes. Hab ich unter der MFC schon schmerzlich erleben müssen ^^

@nop
Sorry, Code kann ich erst morgen liefern.

10.04.2006 - 16:26 Uhr

Hallo Leute 🙂

Ich bastele gerade an einer Art scrollbaren PictureBox rum. Nachdem ich nun die Bildlaufleisten da reingebastelt habe, stehe ich vor dem Problem, dass ein ein Auswahlfensterchen aufziehen will, was an sich ganz gut klappt.

Ich ziehe das Fensterchen über die Mouse-EventHandler auf und nutze zum Zeichnen DrawReversibleFrame(). Solange das Anwendungsfenster vollständig im Vordergrund ist, ist das alles kein Problem. Ich habe aber ein kleines Tool-Fenster, was vor der "PictureBox" angezeigt wird. Wenn ich das mit der Maus über den Auswahlrahmen ziehe und dann wieder wegnehme, ist der Auswahlrahmen weg.

An sich ist das ja erklärlich, weil der Rahmen in OnPaint() nicht neu gezeichnet wird. Füge ich aber Code zum neuzeichnen ein, interessiert es das Programm nicht mehr, welches Fenster im Vordergrund ist und es schmiert die Auswahlfensterchen einfach in das oberste Fenster rein.

Und nun die Frage 🙂
Kann ich es irgendwie hinbekommen, ein Auswahlfensterchen nur im Clientbereich zu zeichnen, ohne dass es zu Ärger wegen Kollisionen mit anderen Fenstern kommt?

Vielen Dank schonmal im Vorraus für eure Antworten 🙂