C# 图像上的画布-绘制控件的不同大小

C# 图像上的画布-绘制控件的不同大小,c#,.net,wpf,image,canvas,C#,.net,Wpf,Image,Canvas,我的XAML是: <Grid Name="grid"> <Viewbox Name="viewBox" Grid.Column="0" Grid.Row="0"> <Grid> <Image Name="image" /> <Canvas Name="canvas" />

我的XAML是:

<Grid Name="grid">
            <Viewbox Name="viewBox"  Grid.Column="0" Grid.Row="0">
                <Grid>
                    <Image Name="image" />
                    <Canvas Name="canvas" />
                </Grid>
            </Viewbox>
        </Grid>
但椭圆在不同的图像上看起来是不同的。其大小取决于加载图像的大小。如果加载的图像具有较大的分辨率-椭圆较小。如果加载的图像分辨率很小-椭圆太大

如何绘制具有相同物理大小的椭圆


我尝试将SnapsToDevicePixels属性应用于ellipse控件,但对我无效。

代码的问题是图像控件和内部网格始终获取加载图像的大小。然后,Viewbox将缩放所有内容以适应外部栅格(单元格)。显然,这也会按相同的比例因子缩放画布及其子元素。因此,在加载不同大小的图像时,可以观察到不同大小的椭圆

解决方案是不使用Viewbox。图像控件已缩放显示的图像,除非将其属性设置为
None
。因此,您根本不需要Viewbox。您应该通过设置图像控件的
宽度
高度
,或者两者都设置,为图像控件指定一个合适的大小

<Grid>
    <Image Name="image" Width="120" />
    <Canvas Name="canvas" />
</Grid>

<Grid>
    <Image Name="image" Width="120" />
    <Canvas Name="canvas" />
</Grid>