我有一个Canvas,它在XAML中使用ImageBrush和ImageSource设置背景。
<ImageBrush ImageSource="/Assets/mainDiagram.jpg" />
我想知道如何从Canvas对象的Background成员中获取ImageSource或值。
以下是我正在使用的代码:
// this is the resolution of the background source image
private int[] BkgResXY
{
get
{
int[] bkgResXY = new int[2];
bkgResXY[0] = (int)(double)this.Background.GetValue(Panel.MaxWidthProperty);
bkgResXY[1] = (int)(double)this.Background.GetValue(Panel.MaxHeightProperty);
return bkgResXY;
}
}
编辑:
我看到Panel类有多个高度属性,Background继承自Panel类。不确定哪一个是ImageSource分辨率。
编辑:
所以我已经走了这么远(this.Background as ImageBrush).ImageSource
但我遇到了一个障碍,因为ImageSource不包含源图像的原始高度和宽度。
编辑:
我这样做是为了获得背景图像分辨率:
bkgResXY[0] = ((this.Background as ImageBrush).ImageSource as BitmapSource).PixelWidth;
bkgResXY[1] = ((this.Background as ImageBrush).ImageSource as BitmapSource).PixelHeight
答案 0 :(得分:2)
要访问ImageBrush
的属性,您需要先放置Background
属性。为了安全起见,我更倾向于使用as
运算符而不是简单的强制转换。拥有Canvas
<Canvas x:Name="myCanvas">
<Canvas.Background>
<ImageBrush ImageSource="1.jpg" />
</Canvas.Background>
</Canvas>
您可以获得背景图片的原始宽度,如
var canvasBackground = myCanvas.Background as ImageBrush;
if (canvasBackground != null)
{
//Get the ORIGINAL width of the source
var bitmapImage = canvasBackground.ImageSource as BitmapImage;
if (bitmapImage != null)
{
var originalBackgroundWidth = bitmapImage.PixelWidth;
}
}