


Codefreigabe für die Drag- und Zoom-Implementierung des WinForm-Steuerelements in C#
In diesem Artikel wird hauptsächlich der Implementierungscode für das Ziehen und Skalieren des WinForm-Steuerelements in C# vorgestellt. Wenn Sie interessiert sind, können Sie sich darüber informieren.
Das Ziehen und Zoomen des C#-WinForm-Steuerelements ist eine sehr nützliche Funktion. Die Implementierung ist eigentlich sehr einfach. Sie umfasst hauptsächlich das Entwerfen der MouseDown-, MouseLeave- und MouseMove-Ereignisse des Steuerelements. Mit den folgenden Schritten werden die Zieh- und Zoomfunktionen des C#-WinForm-Steuerelements schrittweise implementiert.
1. Definieren Sie einen Aufzählungstyp zur Beschreibung des Cursor--Status
private enum EnumMousePointPosition { MouseSizeNone = 0, //'无 MouseSizeRight = 1, //'拉伸右边框 MouseSizeLeft = 2, //'拉伸左边框 MouseSizeBottom = 3, //'拉伸下边框 MouseSizeTop = 4, //'拉伸上边框 MouseSizeTopLeft = 5, //'拉伸左上角 MouseSizeTopRight = 6, //'拉伸右上角 MouseSizeBottomLeft = 7, //'拉伸左下角 MouseSizeBottomRight= 8, //'拉伸右下角 MouseDrag = 9 // '鼠标拖动 }
2. Definieren Sie mehrere Variablen
const int Band = 5; const int MinWidth=10; const int MinHeight=10; private EnumMousePointPosition m_MousePointPosition; private Point p,p1;
3. Definieren Sie Ihr eigenes MyMouseDown-Ereignis
private void MyMouseDown(object sender,System.Windows.Forms.MouseEventArgs e) { p.X=e.X; p.Y=e.Y; p1.X=e.X; p1.Y=e.Y; }
4. Definieren Sie Ihr eigenes MyMouseLeave-Ereignis
private void MyMouseLeave(object sender, System.EventArgs e) { m_MousePointPosition = EnumMousePointPosition.MouseSizeNone; this.Cursor=Cursors.Arrow; }
5. Entwerfen Sie eine Funktion , um den Cursor sicherzustellen ist in Stilen für verschiedene Positionen des Steuerelements
private EnumMousePointPosition MousePointPosition(Size size,System.Windows.Forms.MouseEventArgs e) { if ((e.X >= -1 * Band) | (e.X <= size.Width) | (e.Y >= -1 * Band) | (e.Y <= size.Height)) { if (e.X < Band) { if (e.Y < Band) {return EnumMousePointPosition.MouseSizeTopLeft;} else { if (e.Y > -1 * Band + size.Height) {return EnumMousePointPosition.MouseSizeBottomLeft;} else {return EnumMousePointPosition.MouseSizeLeft;} } } else { if (e.X > -1 * Band + size.Width) { if (e.Y < Band) {return EnumMousePointPosition.MouseSizeTopRight;} else { if (e.Y > -1 * Band + size.Height) {return EnumMousePointPosition.MouseSizeBottomRight;} else {return EnumMousePointPosition.MouseSizeRight;} } } else { if (e.Y < Band) {return EnumMousePointPosition.MouseSizeTop;} else { if (e.Y > -1 * Band + size.Height) {return EnumMousePointPosition.MouseSizeBottom;} else {return EnumMousePointPosition.MouseDrag;} } } } } else {return EnumMousePointPosition.MouseSizeNone;} }
6. Definieren Sie Ihr eigenes MyMouseMove-Ereignis. In diesem Fall wird die oben entworfene Funktion verwendet Ein Initialisierungsprozess für alle Steuerelemente auf der Schnittstelle „panel1“ ist an die Ereignisse „MyMouseDown“, „MyMouseLeave“ und „MyMouseMove“ gebunden. Denken Sie daran, ihn zuerst während der Formularinitialisierung oder Form_Load auszuführen.
private void MyMouseMove(object sender,System.Windows.Forms.MouseEventArgs e) { Control lCtrl =(sender as Control); if (e.Button==MouseButtons.Left) { switch (m_MousePointPosition) { case EnumMousePointPosition.MouseDrag: lCtrl.Left =lCtrl.Left+ e.X - p.X; lCtrl.Top =lCtrl.Top+ e.Y - p.Y; break; case EnumMousePointPosition.MouseSizeBottom: lCtrl.Height = lCtrl.Height + e.Y - p1.Y; p1.X=e.X; p1.Y=e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeBottomRight: lCtrl.Width = lCtrl.Width + e.X - p1.X; lCtrl.Height = lCtrl.Height + e.Y - p1.Y; p1.X=e.X; p1.Y=e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeRight: lCtrl.Width = lCtrl.Width + e.X - p1.X; // lCtrl.Height = lCtrl.Height + e.Y - p1.Y; p1.X=e.X; p1.Y=e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTop: lCtrl.Top = lCtrl.Top + (e.Y - p.Y); lCtrl.Height = lCtrl.Height - (e.Y - p.Y); break; case EnumMousePointPosition.MouseSizeLeft: lCtrl.Left = lCtrl.Left + e.X - p.X; lCtrl.Width = lCtrl.Width - (e.X - p.X); break; case EnumMousePointPosition.MouseSizeBottomLeft: lCtrl.Left = lCtrl.Left + e.X - p.X; lCtrl.Width = lCtrl.Width - (e.X - p.X); lCtrl.Height = lCtrl.Height+ e.Y - p1.Y; p1.X=e.X; p1.Y=e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTopRight: lCtrl.Top = lCtrl.Top + (e.Y - p.Y); lCtrl.Width = lCtrl.Width + (e.X - p1.X); lCtrl.Height = lCtrl.Height - (e.Y - p.Y); p1.X=e.X; p1.Y=e.Y; //'记录光标拖动的当前点 break; case EnumMousePointPosition.MouseSizeTopLeft: lCtrl.Left = lCtrl.Left + e.X - p.X; lCtrl.Top = lCtrl.Top + (e.Y - p.Y); lCtrl.Width = lCtrl.Width - (e.X - p.X); lCtrl.Height = lCtrl.Height - (e.Y - p.Y); break; default: break; } if (lCtrl.Width<MinWidth) lCtrl.Width=MinWidth; if (lCtrl.Height<MinHeight) lCtrl.Height=MinHeight; } else { m_MousePointPosition = MousePointPosition(lCtrl.Size, e); //'判断光标的位置状态 switch (m_MousePointPosition) //'改变光标 { case EnumMousePointPosition.MouseSizeNone: this.Cursor = Cursors.Arrow; //'箭头 break; case EnumMousePointPosition.MouseDrag: this.Cursor = Cursors.SizeAll; //'四方向 break; case EnumMousePointPosition.MouseSizeBottom: this.Cursor = Cursors.SizeNS; //'南北 break; case EnumMousePointPosition.MouseSizeTop: this.Cursor = Cursors.SizeNS; //'南北 break; case EnumMousePointPosition.MouseSizeLeft: this.Cursor = Cursors.SizeWE; //'东西 break; case EnumMousePointPosition.MouseSizeRight: this.Cursor = Cursors.SizeWE; //'东西 break; case EnumMousePointPosition.MouseSizeBottomLeft: this.Cursor = Cursors.SizeNESW; //'东北到南西 break; case EnumMousePointPosition.MouseSizeBottomRight: this.Cursor = Cursors.SizeNWSE; //'东南到西北 break; case EnumMousePointPosition.MouseSizeTopLeft: this.Cursor = Cursors.SizeNWSE; //'东南到西北 break; case EnumMousePointPosition.MouseSizeTopRight: this.Cursor = Cursors.SizeNESW; //'东北到南西 break; default: break; } } }
8. Ok, vor dem Ausführen platzieren Sie ein paar Steuerelemente auf Panel1, führen das Programm aus, Sie sollten in der Lage sein, es nach Belieben zu verschieben und seine Größe zu ändern
private void initProperty() { for(int i = 0; i < this.panel1.Controls.Count; i++) { this.panel1.Controls[i].MouseDown+= new System.Windows.Forms.MouseEventHandler(MyMouseDown); this.panel1.Controls[i].MouseLeave+= new System.EventHandler(MyMouseLeave); this.panel1.Controls[i].MouseMove += new System.Windows.Forms.MouseEventHandler(MyMouseMove); } }
C# WinForm-Steuerung Damit ist die Implementierung des Ziehens und Zoomens abgeschlossen.
Das obige ist der detaillierte Inhalt vonCodefreigabe für die Drag- und Zoom-Implementierung des WinForm-Steuerelements in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Leitfaden zu Active Directory mit C#. Hier besprechen wir die Einführung und die Funktionsweise von Active Directory in C# sowie die Syntax und das Beispiel.

Leitfaden zum Zufallszahlengenerator in C#. Hier besprechen wir die Funktionsweise des Zufallszahlengenerators, das Konzept von Pseudozufallszahlen und sicheren Zahlen.

Leitfaden zu den Zugriffsmodifikatoren in C#. Wir haben die Einführungstypen von Zugriffsmodifikatoren in C# zusammen mit Beispielen und Ausgaben besprochen.

Leitfaden zur C#-Datenrasteransicht. Hier diskutieren wir die Beispiele, wie eine Datenrasteransicht aus der SQL-Datenbank oder einer Excel-Datei geladen und exportiert werden kann.

Leitfaden zu Mustern in C#. Hier besprechen wir die Einführung und die drei wichtigsten Arten von Mustern in C# zusammen mit ihren Beispielen und der Code-Implementierung.

Leitfaden zur C#-Serialisierung. Hier besprechen wir die Einführung, die Schritte des C#-Serialisierungsobjekts, die Funktionsweise bzw. das Beispiel.

Leitfaden zu Primzahlen in C#. Hier besprechen wir die Einführung und Beispiele von Primzahlen in C# sowie die Codeimplementierung.

Leitfaden zu Webdiensten in C#. Hier besprechen wir eine Einführung in Webdienste in C# mit Technologienutzung, Einschränkungen und Beispielen.
