以偏移量绘制图形
本文关键字:图形 绘制 偏移量 | 更新日期: 2023-09-27 18:29:04
在我的代码中,假设我有PaintObject(Graphics g)
。在另一个函数中,我想调用PaintObject
函数在偏移处绘制一些东西,而不是在(0,0)处绘制。
我知道在Java中,我可以使用Graphics.create(x, y, width, height)
函数来创建我可以使用的图形对象的副本,该副本将在原始图形的边界内绘制。在C#中有类似的方法吗?
只是给你一个我的代码的例子:
class MyClass : UserControl {
void PaintObject(Graphics g) {
// Example: draw 10x10 rectangle
g.DrawRectangle(new Pen(Color.Black), 0, 0, 10, 10);
}
protected override void OnPaint(PaintEventArgs e) {
Graphics g = e.Graphics;
// TODO: Paint object from PaintObject() at offset (50, 50)
}
}
在Graphics
对象上设置转换:
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
Matrix transformation = new Matrix();
transformation.Translate(50, 50);
g.Transform = transformation;
}
或
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
g.TranslateTransform(50, 50);
}
使用Graphics
方法
public void TranslateTransform(float dx, float dy)
g.TranslateTransform(dx, dy);
您可以使用Graphics.TranslateTransform方法:
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.TranslateTransform(50, 50);
PaintObject(e.Graphics);
}