オブジェクトにアイテムを描画する必要があることがよくありGraphics
ます。これまでのやり方は、オブジェクトと、アイテムが描画されるポイントを決定するパラメーターDrawItem
を受け取る関数を使用することです。Graphics
offsetX
offsetY
問題は、X軸とY軸のゼロが他のポイントにあるグラフィックスのバージョンを提供DrawItem
するメソッドがあれば、内部のコードがはるかに見栄えが良くなることです。このようにして、このオブジェクトをメソッドに渡すだけで、他の2つのパラメーターを受け取る必要はありません。そのような機能はありますか、それとも最も近いものは何ですか?Graphics
myGraphics.DisplacedGraphics(offsetX, offsetY)
Graphics
DrawItem
編集:その間、これは私が書いたものですが、そのような基本的な要件のようですが、そのような機能がすでに存在することを願っています(まだたくさんのメソッドを追加する必要がありますが、これらは今のところ必要なすべてです)(DisplacedCanvas
方法):
public class Canvas
{
private readonly Graphics _Graphics;
private readonly int _OriginX = 0;
private readonly int _OriginY = 0;
public Canvas(Graphics graphics, int originX, int originY)
{
_Graphics = graphics;
_OriginX = originX;
_OriginY = originY;
}
public Canvas(Graphics graphics) : this(graphics, 0, 0) { }
public SizeF MeasureString(string text, Font font)
{
return _Graphics.MeasureString(text, font);
}
public void FillRectangle(Brush brush, int x, int y, int width, int height)
{
_Graphics.FillRectangle(brush, _OriginX + x, _OriginY + y, width, height);
}
public void DrawString(string s, Font font, Brush brush, float x, float y)
{
_Graphics.DrawString(s, font, brush, _OriginX + x, _OriginY + y);
}
public Canvas DisplacedCanvas(int x, int y)
{
return new Canvas(_Graphics, _OriginX + x, _OriginY + y);
}
}