【问题标题】:Getting correct coordinates from scaled picture box with Zoom SizeMode使用 Zoom SizeMode 从缩放的图片框中获取正确的坐标
【发布时间】:2010-12-02 13:37:39
【问题描述】:
  1. 我将 jpg 加载到图片框(在 SizeMode 中为缩放)。
  2. 我在图片框上画了一个矩形,取了坐标。
  3. 我在paint中打开了jpg并观察了坐标(我在图片框上绘制了矩形)。

当我将矩形坐标(x 和 y)与绘制坐标进行比较时,它们并不相同。

我把SizeMode改成Normal,观察到坐标变了,但是图片太大了,显示不全,所以想用Zoom SizeMode属性。

说图片大小为 2825x3538 并保持图片框大小模式为正常,图片部分显示在图片框中。所以我将图片框模式更改为缩放(以适应系统屏幕分辨率),并且在将其与普通模式与 SizeMode 进行比较时,坐标不匹配。

我怎样才能获得相同的坐标?

private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
    OpenFD.FileName = "";
    OpenFD.Title = "open image";
    OpenFD.InitialDirectory = "C";
    OpenFD.Filter = "JPEG|*.jpg|Bmp|*.bmp|All Files|*.*.*";
    if (OpenFD.ShowDialog() == DialogResult.OK)
    {
        file = OpenFD.FileName;
        image = Image.FromFile(file);
        pictureBox1.Image = image;
        svc = Screen.PrimaryScreen;
        pictureBox1.Width = svc.Bounds.Width;
        pictureBox1.Height = svc.Bounds.Height - 100;
        mybitmap1 = new Bitmap(pictureBox1.Image);
        mybitmap1.SetResolution(300, 300);
        pictureBox1.Image = mybitmap1;
    }
}

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
    if (mybitmap == null)
    {
        mybitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
        mybitmap.SetResolution(300, 300);
    }
 }

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    using (g = Graphics.FromImage(mybitmap))
    {
        using (Pen pen = new Pen(Color.Green, m))
        {
            e.Graphics.DrawRectangle(pen, r);
            e.Graphics.DrawString(lab[c].ToString(), new Font(lab[c].ToString(), 8F), new SolidBrush(label1.ForeColor), r);
        }
    }
}

【问题讨论】:

  • 你能给我们一个代码示例,以便我们弄清楚你在说什么吗?

标签: c#


【解决方案1】:

您可以在实际图像和图片框之间使用两个比例因子,一个是高度,另一个是宽度。

【讨论】:

    猜你喜欢
    • 2018-10-23
    • 2016-10-31
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    相关资源
    最近更新 更多