我们有一个 StreamGeometry 对象,我们希望在 OnRender 调用期间在大约 400 个不同的位置进行渲染。当然,问题在于几何对象使用绝对坐标。
虽然我们当然可以在渲染调用之前应用变换,但这意味着我们本质上也会创建 400 个变换,这似乎有点过头了。
我们只想说'在那个位置渲染这个,就像这样(注意:DrawGeometryAtPoint 是虚构的)......
protected override void OnRender(System.Windows.Media.DrawingContext dc)
{
base.OnRender(dc);
var myGeometry = new StreamGeometry();
// Code to init the geometry goes here
// Render the same geometry but at four different locations
dc.DrawGeometryAtPoint(Brush1, Pen1, myGeometry, Origin1);
dc.DrawGeometryAtPoint(Brush2, Pen2, myGeometry, Origin2);
dc.DrawGeometryAtPoint(Brush3, Pen3, myGeometry, Origin3);
dc.DrawGeometryAtPoint(Brush4, Pen4, myGeometry, Origin4);
}
那么可以做到吗?