07/11/13 9:04
Thejuster
Salve ragazzi.
Durante la progettazione del mio programma ( Intendo lato codice non ide )
sto implementando un sistema per permettere all'utente di ridimensionare i controlli a runtime.
Vi elenco solo i membri necessari al funzionamento.
Il problema semplice che ho e al void Mouse Move, il tutto funziona regolarmente
ma quello che vorrei ottenere e un effetto tipo Visual Studio.
Se infatti provo a ridimensionare il controllo esso si ridimensiona in entrambi i 4 lati.
A runtime, quando l'oggetto è selezionato appaiono i rettangolini come in visual studio sull'oggetto per permettere appunto di ridimensionare.
Questa porzione dovrebbe ridimensionare il controllo partendo da:
Alto / Sinistra
+-----------
| |
|_________|
e rimanere fermo in controllo in basso a destra.
ovviamente il mio codice non funziona come dovrebbe, perche vengono ridimensionati tutti e 4 lati.
e di questo sono consapevole.
Conoscete un modo per far questo?
Ovvero ridimensionare partendo da NW ma rimanendo fermo SE.
Durante la progettazione del mio programma ( Intendo lato codice non ide )
sto implementando un sistema per permettere all'utente di ridimensionare i controlli a runtime.
Vi elenco solo i membri necessari al funzionamento.
bool c_sel; //Se è selezionato un controllo bool ready; //Se il cursose si trova nell'area di ridimensionamento bool resize; //Abilito il ridimensionamento Control SelectedObject; //Oggetto selezionato private void Form_MouseDown(object sender, MouseEventArgs e) { //Se e selezionato un oggetto //Se e possibile ridimensionare l'oggetto //Avvia il ridimensionamento if (c_sel && ready) { resize = true; } } private void Form_MouseMove(object sender, MouseEventArgs e) { //Ridimensionare i controlli if (c_sel) { if (e.X > ((Control)SelectedObject).Location.X - 5 && e.X < ((Control)SelectedObject).Location.X + 5 && e.Y > ((Control)SelectedObject).Location.Y-5 && e.Y < ((Control)SelectedObject).Location.Y+5) { Cursor = Cursors.SizeNWSE; ready = true; //Abilito la possibilità di ridimensionare } else { Cursor = Cursors.Arrow; ready = false; //disabilito la possibilità di ridimensionare } } //Ridimensionamento if (resize) { Cursor = Cursors.SizeNWSE; ((Control)SelectedObject).Width = e.X; ((Control)SelectedObject).Height = e.Y; ((Control)SelectedObject).Location = new Point(((Control)SelectedObject).Width, ((Control)SelectedObject).Height); } } private void Form_MouseUp(object sender, MouseEventArgs e) { resize = false; }
Il problema semplice che ho e al void Mouse Move, il tutto funziona regolarmente
ma quello che vorrei ottenere e un effetto tipo Visual Studio.
Se infatti provo a ridimensionare il controllo esso si ridimensiona in entrambi i 4 lati.
//Ridimensionamento if (resize) { Cursor = Cursors.SizeNWSE; ((Control)SelectedObject).Width = e.X; ((Control)SelectedObject).Height = e.Y; ((Control)SelectedObject).Location = new Point(((Control)SelectedObject).Width, ((Control)SelectedObject).Height); }
A runtime, quando l'oggetto è selezionato appaiono i rettangolini come in visual studio sull'oggetto per permettere appunto di ridimensionare.
Questa porzione dovrebbe ridimensionare il controllo partendo da:
Alto / Sinistra
+-----------
| |
|_________|
e rimanere fermo in controllo in basso a destra.
ovviamente il mio codice non funziona come dovrebbe, perche vengono ridimensionati tutti e 4 lati.
e di questo sono consapevole.
Conoscete un modo per far questo?
Ovvero ridimensionare partendo da NW ma rimanendo fermo SE.
mire.forumfree.it/ - Mire Engine
C# UI Designer
C# UI Designer