3

我把这个简单的代码放在一起画了一条线。现在我想将 a 应用ScaleTransform到 10 倍;但下面的代码不起作用。

var bitmap = new Bitmap(pictureBox1.Size.Width, pictureBox1.Size.Height);
var g = Graphics.FromImage(bitmap);
pictureBox1.Image = bitmap;

var pn = new Pen(Color.Wheat, -1);
g.DrawLine(pn, 0, 0, 10, 10);

pn.Dispose();

// I'm trying to scaletransform here!
g.ScaleTransform(10, 10);

更新:

更新更改的正确方法是什么?我没有得到任何结果:(

g.ScaleTransform(1, 1);
pictureBox1.Invalidate();
4

1 回答 1

3

您必须在画线之前应用转换!

var g = Graphics.FromImage(bitmap);
g.ScaleTransform(10, 10);    
using (pn = new Pen(Color.Wheat, -1)) {
    g.DrawLine(pn, 0, 0, 10, 10);
}

变换应用于图形对象的变换矩阵 ( g.Transform)。

还可以使用该using语句来处理资源。如果发生异常或者using语句块应该留下returnorbreak语句,它甚至会处理笔。

于 2014-03-24T16:33:47.447 回答