Причина в том, что вы не указываете какую-либо позицию в конструкторе Rect
, поэтому по умолчанию используется позиция (0,0)
.
Я предлагаю использовать RenderTargetBitmap
, чтобы поместить Canvas
в Grid
, а затем выполнить любое явное позиционирование, требуемое вашим пользовательским интерфейсом для этого внешнего Grid
, позволяя вашему внутреннему Canvas
естественнымпринять позицию (0,0)
внутри этого родителя Grid
.
Например, если у вас есть:
<Window>
<Canvas Left="10" Top="30" />
</Window>
Измените его на:
<Window>
<Grid Left="10" Top="30">
<Canvas />
</Grid>
</Window>
Затем вы можете отменить свои звонки на Measure
и Arrange
в целом.Однако убедитесь, что вы все еще передаете дочерний Canvas
в ваш метод RenderTargetBitmap.Render
, а не родительский Grid
.