Laden...

Drag und Drop von Steuerelement mit ghost image

Erstellt von Schnueggel vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.862 Views
S
Schnueggel Themenstarter:in
54 Beiträge seit 2007
vor 15 Jahren
Drag und Drop von Steuerelement mit ghost image

Ich drage gerade Steuerelemente auf einer Form hin und her, klappt auch ganz gut.
Ich hätte gerne das er auch ein Ghost Image von dem Steuerelement mit der Maus mit geht, ist das möglich? Oder doch lieber das Element mit OnMouseMove pixelweise mitziehen.

Gelöschter Account
vor 15 Jahren

ist das möglich

du kannst sogar den mousezeiger gegen ein halbtransparentes ghostimage des steuerelementes austauschen.

Oder doch lieber das Element mit OnMouseMove pixelweise mitziehen.

das allerdings würde ich nciht machen, da das eine menge events wirft.

S
Schnueggel Themenstarter:in
54 Beiträge seit 2007
vor 15 Jahren

Hab das nur im Dreamweaver Cs4 gesehen und dachte ich möchte das auch so. wenn ich den Cursor austausche gegen ein halbtransparentes Bild, dann ist aber der Cursor ja weg, oder auf dem Image drauf als fake oder lieg ich da falsch?

Gelöschter Account
vor 15 Jahren

anders ausgedrückt: du kannst ein eigenes bild als cursor verwenden.
ob du jetzt ein ghostimage mit vorherigem cursor oder ohne nimmst, belibt dir überlassen.

S
Schnueggel Themenstarter:in
54 Beiträge seit 2007
vor 15 Jahren

Es sieht so aus als lasse sich der Cursor beim Vorgang des draggens nicht überschreiben. Ich schaffe alle Cursor zu überschreiben mit dem Image nur den nicht beim draggen. Hab es testweise mal in alle event overrides geschrieben in der form sowohl auch im Steuerelement.

Jemand vielleicht eine idee woran es liegen könnte?

Bin mir nicht sicher ob der OnMouseDownEvent nicht hakt,der beginnt ja auf dem Steuerelement und feuert trotzdem weiter obwohl er beim Bewegen ja auf der Form ist irgendwann. Den OnMouseUp event auf der Form registriert das Programm dann nicht mehr, hab auch hier testweise eine MessageBox in beide MouseUp events geschrieben.

915 Beiträge seit 2006
vor 15 Jahren

Hallo Schnueggel 😉

Auf Codeproject wird man für soetwas immer fündig.

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

S
Schnueggel Themenstarter:in
54 Beiträge seit 2007
vor 15 Jahren

Tatsächlich war darin etwas enthalten was ich brauchen kann.



  protected override void OnGiveFeedback(GiveFeedbackEventArgs e)
        {
            base.OnGiveFeedback(e);
            if (e.Effect == DragDropEffects.Move)
            {
                // Show pointer cursor while dragging

                e.UseDefaultCursors = false;
                this.Cursor = new Cursor(cursIcon.Handle);
              

            }
            else e.UseDefaultCursors = true;
        }

Den code von Project möcht ich glaub eher nicht benutzen. da ich es vermeiden möchte die Win Api zu benutzen wo ich damit eh nicht umgehn kann richtig. ein Mitarbeiter von Microsoft bemängelt in dem Artikel auch den Code.

Er tauscht mir also den Cursor aus zentriert ihn aber, was natürlich scheisse ist ^^.
Hab auch aus den Kommentaren glaub rauslesen können das die Iconsize für den Mauszeiger begrenzt ist auf 250px, damit ist das natürlich gegessen. Trotzdem jede Menge gelernt wieder.

915 Beiträge seit 2006
vor 15 Jahren

Hrm... ohne WIN API habe ich dir sonst leider keine Idee.

Der andere Weg wäre über einen globalen LowLevelMouse Hook gewesen, hier kann man dann beim MouseMove einfach nen Bild oder Abbild als GostImage zeichnen. Nur ob das Performanter ist als die Lösung von codeProject, bezweifle ich.

Vielleicht kennt jemand ja noch einen reinen .NET Weg - aber ist this.Cursor.Draw() ebenso auf 250px beschränkt?

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

S
Schnueggel Themenstarter:in
54 Beiträge seit 2007
vor 15 Jahren

Ja hab gemerkt das Drag und Drop nicht so ohne ist wenn man mehr will als den Standard, ich bin jetzt wieder auf der Nummer mit OnMOuseMove und was solls es geht ^^. Dafür kann ich nach einem Tag nur mit drag und drop beschäftigen. Immerhin mit drag und drop events umgehen.