none
Canvas的Background高度超出2000,图片显示问题 RRS feed

  • 问题

  • 当Canvas的Background设置为图片,并且Canvas高度超出2000时,超出的部分会显示失败;

    如果Background使用颜色显示,则正常。

    目前只知道一般情况下,对图片的要求是不要超出2000*2000的宽高度,难道对Canvas的背景图片显示高度也有限制吗?

    有没有好的解决方案呢?

    代码如下:

    ScrollViewer sv = new ScrollViewer();
    sv.Width = 480;
    sv.Height = 600;

    Canvas canvas = new Canvas();
    canvas.Width = 480;
    canvas.Height = 3000;

    ImageBrush imgBrush = new ImageBrush();
            BitmapImage bit = new BitmapImage();
            bit.UriSource = new System.Uri("background1.png", UriKind.Relative);
            imgBrush.ImageSource = bit;

            canvas.Background = imgBrush;

            sv.Content = canvas;

    软后把ScrollViewer显示到屏幕上

    background1.png图片如下:

    2012年3月2日 6:27

答案

  • 你好,由于你的image作为canvas背景时会被自动拉伸到canvas的大小,这样高或者宽>2000时也无法显示出来了。

    我目前能想到的结果方案是自己手动的将背景图片纵向分割为两个高度各为1500,然后放两个Image在canvas中,这样就可以成功显示出来了。

    • 已标记为答案 Shi Ding 2012年3月13日 6:30
    2012年3月5日 9:23

全部回复

  • 建议不要加载如此高分辨率的图片作为背景,会影响应用程序的运行效率。


    Xuesong

    2012年3月4日 11:32
    版主
  • 建议不要加载如此高分辨率的图片作为背景,会影响应用程序的运行效率。


    Xuesong

    我图片的宽高度没有超出2000,主要是Canvas高度超出了,那如果这样用的话,有没有解决方法呢?
    2012年3月5日 2:56
  • 你好,由于你的image作为canvas背景时会被自动拉伸到canvas的大小,这样高或者宽>2000时也无法显示出来了。

    我目前能想到的结果方案是自己手动的将背景图片纵向分割为两个高度各为1500,然后放两个Image在canvas中,这样就可以成功显示出来了。

    • 已标记为答案 Shi Ding 2012年3月13日 6:30
    2012年3月5日 9:23