私のXAMLは次のとおりです。
<Grid Name="grid">
<Viewbox Name="viewBox" Grid.Column="0" Grid.Row="0">
<Grid>
<Image Name="image" />
<Canvas Name="canvas" />
</Grid>
</Viewbox>
</Grid>
ご覧のとおり、グリッドにキャンバスと画像のコントロールがあり、画像上に描画を実行できます。
ロードしているすべての画像のdpiは同じです-72。
画像が読み込まれると、データを取得して描画を実行します。
var ellipse = new Ellipse
{
Width = 100,
Height = 100,
Cursor = Cursors.Hand,
Fill = new SolidColorBrush(Colors.Green),
Stroke = new SolidColorBrush(Colors.Black),
StrokeThickness = 1
};
canvas.Children.Add(ellipse);
Canvas.SetLeft(ellipse, 10);
Canvas.SetTop(ellipse, 10);
ただし、画像によって楕円の見え方が異なるように見えます。そのサイズは、ロードされた画像のサイズによって異なります。ロードされた画像の解像度が大きい場合-楕円は小さいです。ロードされた画像の解像度が小さい場合-楕円が大きすぎます。
同じ物理サイズの楕円を描画するにはどうすればよいですか?
楕円コントロールにSnapsToDevicePixelsプロパティを適用しようとしましたが、機能しませんでした。