我已将一组向量数据加载到我的应用程序中,其边界从
{-165835.328125, 6582072.5}
到
{-64674.02734375, 6609767}
宽度为101161.30078125,高度为27694.5。
我想在我的
FrameworkElement
它默认为663像素宽和468像素高,并且在调整元素大小时明显调整其大小。就我所能判断的顺序而言
DrawingGroup
我需要创建一个
ScaleTransform
并将其添加到
TransformGroup
然后我可以将其设置为
Transform
的
绘图组
-我想我还需要一个偏移量,以便将数据的原始位置移到视图的左上角,尽管回想起来,我最好对齐中心。
这是我目前掌握的代码:
var transformWidth = this.drawingGroup.Bounds.Width;
var scale = width / transformWidth;
var left = this.drawingGroup.Bounds.Left * -1;
var top = this.drawingGroup.Bounds.Top * -1;
var translateTransform = new TranslateTransform(left, top);
var scaleTransform = new ScaleTransform();
scaleTransform.CenterX = (drawingGroup.Bounds.Width / 2);
scaleTransform.CenterY = (drawingGroup.Bounds.Height / 2);
scaleTransform.ScaleX = scale;
scaleTransform.ScaleY = scale;
var tg = new TransformGroup()
{
Children = new TransformCollection() { translateTransform, scaleTransform }
};
var oldTransform = this.drawingGroup.Transform;
this.drawingGroup.Transform = tg;
context.DrawDrawing(this.drawingGroup);
this.drawingGroup.Transform = oldTransform;
这在多个层面上都很粗糙,但目前困扰我的主要问题是它不起作用。我可以调整输入上的数据(就像在生成几何体时手动平移点一样),它只会绘制出轻微错误,因此我认为几何体存在,但在可见区域之外,就我所知,平移没有任何作用。我试着将变换推到
DrawingContext
但这似乎也不起作用(我非常希望能够在
绘图组
因此,我可以稍后将事情与它们联系起来,因此可能需要使用不必要的转换开关(O),当我检查DrawingGroup的子集合时,它们的几何图形在应用转换后似乎未被转换-我不知道这是否正确。
我需要做什么才能使我的数据在
框架构件
?