C# 在PictureBox中缩放图片

C# 在PictureBox中缩放图片,c#,winforms,visual-studio,C#,Winforms,Visual Studio,我在PictureBox控件中有一个图片和一行。我知道如何使用以下代码缩放图片本身: private void pictureBox1_Click(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { if (Globals.x == 1) { Globals.y = 1; Globals.a = e.X;

我在
PictureBox
控件中有一个图片和一行。我知道如何使用以下代码缩放图片本身:

private void pictureBox1_Click(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        if (Globals.x == 1)
        {
            Globals.y = 1;
            Globals.a = e.X;
            Globals.b = e.Y;
        }
    }
}

private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
    // Create a local version of the graphics object for the PictureBox.
    Graphics g = e.Graphics;
    if (Globals.y == 0)
    {
        e.Graphics.DrawImage(bitmap, 0, 0, 470, 353);
        e.Graphics.DrawLine(System.Drawing.Pens.Red, 210, 66, 112, 122);
        e.Graphics.DrawLine(System.Drawing.Pens.Red, 112, 122, 15, 205);
    }

    Bitmap bmpZoom = new Bitmap(bitmap.Width, bitmap.Height);
    int new4W = bitmap.Width / 3;
    int new4H = bitmap.Height / 3;
    int new2W = bitmap.Width *2/ 3;
    int new2H = bitmap.Height *2/ 3;
    Rectangle srcRect = new Rectangle(Globals.a - new4W,Globals.b - new4H, new2W, new2H);
    Rectangle dstRect = new Rectangle(60, 10, bmpZoom.Width, bmpZoom.Height);
}
我的代码可以缩放我点击的部分图片,但当我再次尝试画线时,它仍然在相同的位置(这是正常的)


我想要一个可以同时缩放图片和线条的解决方案。如果有人能帮助我,我会很高兴。

FYI,
Graphics g=e.Graphics不创建图形(在绘图系统调用
Paint
event之前已经创建了图形)。至于你的问题,你有以下选择:1)在缩放位图之前在位图上画线2)缩放线实际上只是改变它的坐标,也许是缩放厚度3)不要使用
PictureBox
,创建更全面的控件,它支持图形列表并可以缩放(缩放)本身。注意:问题应标记为
winforms
。您可以使用System.Drawing.Drawing2D和e.Graphics.MultiplyTransform中的矩阵缩放用于绘制线的图形。您将需要代码来来回转换点!请参阅此处,不要试图成为一个聪明人,但您应该真正尝试避免任何类型的全局变量,并尝试提出比
a
b
更具描述性的名称。