将ScaleTransform应用于图形GDI +

时间:2014-03-24 16:29:20

标签: c# gdi+ scaletransform

我把这个简单的代码放在一起画一条线。现在我想将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();

1 个答案:

答案 0 :(得分: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语句块应留有returnbreak语句,它甚至会处理笔。