c#-将操纵的图形绘制到另一个图形中
作者:互联网
我想将一个操纵的图形绘制到另一个图形中:
// 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不旋转.
我想念什么?
解决方法:
图形对象的Transform属性正是该属性.它不执行任何操作,仅告诉图形对象应该如何绘制图像.
因此,您要做的是在要绘制到的图形对象上设置Transform属性-在这种情况下,应将其应用于gBackground对象,就像这样…
gBackground.Transform = matrix;
那么当您转而在gBackground对象上调用DrawImage方法时,它将考虑您已应用的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);