Я новичок в c #, пришёл из фона python / wxpython.Я все еще очень неопытен.
Я пытаюсь создать пользовательское рабочее пространство, которое позволяет размещать объекты, которые имеют характерную форму (прямоугольник или круг).Я бы хотел, чтобы пользователь мог перемещаться и масштабировать в рабочей области.В конце концов, я хочу, чтобы элементы имели атрибуты и были связаны между собой линиями.
Я создал простое приложение на c #, которое позволяет рисовать квадраты на мозаичном фоне сетки .png, но я не могу понять, как настроить реальное рабочее пространство для панорамирования или масштабирования.
На этом этапе было бы неплохо сделать несколько предложений высокого уровня.
Вот мой код только к вашему сведению (будьте добры)
public partial class MainForm : Form
{
bool global_draw_redbox = false;
public MainForm()
{
InitializeComponent();
}
private void redbox(Point mousepos)
{
System.Drawing.Graphics graphicsObj;
graphicsObj = CreateGraphics();
Pen myPen = new Pen(System.Drawing.Color.Red, 3);
Rectangle myRectangle = new Rectangle(mousepos.X - 125, mousepos.Y - 100, 250, 200);
graphicsObj.DrawRectangle(myPen, myRectangle);
}
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
var relativePoint = this.PointToClient(Cursor.Position);
if (global_draw_redbox)
{
//Draw the object based on the mouse position
redbox(relativePoint);
//Reset the flag so we draw just one
global_draw_redbox = false;
}
else
{
MessageBox.Show("No object selected");
}
}
private void Form1_MouseDoubleClick(object sender, MouseEventArgs e)
{
MessageBox.Show("Test Mouse Double Click");
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
var relativePoint = this.PointToClient(Cursor.Position);
XY_Mouse_Position.Text = relativePoint.ToString();
}
private void boxToolStripMenuItem_Click(object sender, EventArgs e)
{
global_draw_redbox = true;
}
}