我把这个简单的代码放在一起画一条线。现在我想将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();
答案 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
语句块应留有return
或break
语句,它甚至会处理笔。