我想将操纵的图形绘制到另一个图形中:
// 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没有旋转。
我错过了什么?
答案 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
。