编程语言
首页 > 编程语言> > c#-将操纵的图形绘制到另一个图形中

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);

标签:gdi-2,c
来源: https://codeday.me/bug/20191101/1984654.html