![]() |
Multimedia »
General Graphics »
Graphics
License: The Code Project Open License (CPOL)
A Resizable Graphical RectangleBy zebulon75018An object associated with a pictureBox managing callback to manipulate the rectangle area. |
C#, Windows, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||
This article wants to introduce a Resizable graphical Rectangle (UserRect) which can be resized and moved.
It's really simple to use.
This object is built with a Rectangle, and is associated with a paintbox.
It shows 8 handles to be resized. If the user clicks on one of these, then s/he can resize the rectangle.
If the user clicks inside the rectangle, then s/he can move the rectangle into the paintbox.
(Sorry for my English, I'm French, but I want to share this with you, and donate it to this great website.)
In a graphical application, the user needs a rectangular graphical zone for a selection.
The features of this object are as follows:
It adds callback event to a pictureBox and treats a mouse event.
To use the object, create a Windows project, add a pictureBox to the main form, and construct the UserRect:
public Form1()
{
InitializeComponent();
rect = new UserRect(new Rectangle(10, 10, 100, 100));
rect.SetPictureBox(this.pictureBox1);
}
If you want to access the new Rectangle value, the UserRect gets a public rect variable:
public class UserRect
{
public Rectangle rect;
The public functions are:
public void Draw(Graphics g);
public void SetPictureBox(PictureBox p);
The private functions are:
Events adding to PictureBox:
private void mPictureBox_MouseDown(object sender, MouseEventArgs e);
private void mPictureBox_MouseUp(object sender, MouseEventArgs e);
private void mPictureBox_MouseMove(object sender, MouseEventArgs e);
Functions treat handles, and modification of cursor:
private Rectangle CreateRectSizableNode(int x, int y)
private Rectangle GetRect(PosSizableRect p);
private PosSizableRect GetNodeSelectable(Point p)
private void ChangeCursor(Point p)
private Cursor GetCursor(PosSizableRect p)
There's one interesting thing. This object associates and treats events of pictureBox alone. You don't need to have all events in your mainform class. There's something missing, if you delete the object then the events are not to be deleted. Object UserRect gets a new variable allowDeformingDuringMovement. If it's true, then when you move the rectangle, you can deform the rect's size on the board.
There's a point I want to add that it's a rotation manipulation.
I updated the source, and now the rectangle is always in control.
I add a checkbox to allow or not the deformation when the rectangle goes out of the box.
General
News
Question
Answer
Joke
Rant
Admin
Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads.
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 4 Nov 2008 Editor: Deeksha Shenoy |
Copyright 2008 by zebulon75018 Everything else Copyright © CodeProject, 1999-2010 Web21 | Advertise on the Code Project |