如何调整图形大小?

时间:2015-06-18 06:57:22

标签: c# image graphics resize

我有两个pictureBoxes" source"和" dest"。现在我想调整一下"来源"将图像显示在我的" dest" -picturebox中。

问题: 我怎样才能调整我的"来源"将图像显示在我的" dest" -picturebox?

这是我的代码,它只会再次显示相同的图像:

private void pictureBoxZoom_Paint(object sender, PaintEventArgs e)
    {
        var settings = new Settings();


        // Create a local version of the graphics object for the PictureBox.
        Graphics Draw = e.Graphics;
        Draw.ScaleTransform(2, 2);       // rescale by factor 2

        IntPtr hDC = Draw.GetHdc(); // Get a handle to pictureBoxZoom.

        Draw.ReleaseHdc(hDC); // Release pictureBoxZoom handle.
    }

1 个答案:

答案 0 :(得分:0)

在每种情况下,您都必须处理PictureBox.SizeMode - 属性。它决定了PictureBox在绘画时对图像的作用。

如果您想应用自定义缩放系数,可以使用Graphics.ScaleTransform - 属性。它允许您缩放整个图形。可以通过创建位图(具有可以使用的Graphics对象)或覆盖PictureBox.OnPaint - Method来对图像本身进行缩放,这需要您创建从PictureBox派生的类。这是最灵活的尝试,因为你可以自己控制一切 - 如果你愿意的话。'

修改 抱歉不够清楚,使用Paint - 事件的方式不起作用。您需要创建自己的PictureBox - 类(从PictureBox派生)并覆盖OnPaint - 方法。然后,您可以在PictureBox使用的ScaleTransform对象上调用Graphics。我为你准备了一个经过测试的样品:

public class PictureBoxScaleable : PictureBox
{
    protected override void OnPaint(PaintEventArgs pe)
    {
        pe.Graphics.ScaleTransform(.2f, .2f);
        base.OnPaint(pe);
    }
}