将操纵的图形绘制到另一个图形中

时间:2012-03-14 08:45:15

标签: c# gdi+

我想将操纵的图形绘制到另一个图形中:

// I have two graphics:
var gHead = Graphics.FromImage(h);
var gBackground = Graphics.FromImage(b);

// Transform the first one
var matrix = new Matrix();
matrix.Rotate(30);
gHead.Transform = matrix;

// Write the first in the second
gBackground.DrawImage(h, 200, 0, 170, 170);

输出是头部img的背景img - 但是头部img没有旋转。

我错过了什么?

2 个答案:

答案 0 :(得分:3)

图形对象的Transform属性就是属性。它不会采取任何操作,只会告诉图形对象它应该如何绘制图像。

所以你要做的是在你绘制的图形对象上设置Transform属性 - 在这种情况下它应该应用于你的gBackground对象,就像这样... < / p>

gBackground.Transform = matrix;

然后当您来到DrawImage对象上调用gBackground方法时,它会考虑您已应用的Transform属性。

请注意,此属性更改将在所有后续DrawImage调用中保留,因此您可能需要重新设置或更改值,然后再进行绘制(如果您需要)


为了更清楚,您的最终代码应如下所示......

// Just need one graphics
var gBackground = Graphics.FromImage(b);

// Apply transform to object to draw on
var matrix = new Matrix();
matrix.Rotate(30);
gBackground.Transform = matrix;

// Write the first in the second
gBackground.DrawImage(h, 200, 0, 170, 170);

答案 1 :(得分:1)

将转换应用于Graphics对象仅在您要使用该特定对象时才有用。你没有对变量gHead做任何事情。尝试将该转换应用于gBackground