【问题标题】:Canvas ImageSource not showing image画布 ImageSource 不显示图像
【发布时间】:2014-08-16 02:05:30
【问题描述】:

这是我的 xaml:

<StackPanel Height="333">
    <Canvas x:Name="imageCanvas"
        RenderOptions.BitmapScalingMode="NearestNeighbor"
        RenderOptions.EdgeMode="Aliased">
        <Canvas.Background>
            <ImageBrush x:Name="image1"
                    Stretch="None"
                    AlignmentX="Left"
                    AlignmentY="Top">                                                     
            </ImageBrush>
        </Canvas.Background>                    
    </Canvas>
    <Canvas x:Name="overlayCanvas">
        <Rectangle Name="dummyRectangle" Width="1" Height="2" Fill="Transparent" />
    </Canvas>
</StackPanel>

这是我的 C# 代码:

void PlayImages()
{
    string testImageFolder = "C:\\TestImages";

    DirectoryInfo d = new DirectoryInfo(testImageFolder);//Assuming Test is your Folder
    FileInfo[] Files = d.GetFiles("*.tif"); //Getting Text files       
    image1.ImageSource = new BitmapImage(new Uri("C:\\TestImages\\ChanA_0001_0001_0001_0001.tif"));

}

但是,当上面的 C# 代码执行时,UI 上什么也没有发生。我想知道我应该在哪里更改以显示图像?谢谢。

【问题讨论】:

  • C:\\Development2012\\ThorImage\\TIS_Development\\GUI\\Controls\\OverlayManager\\TestImages\\ChanA_0001_0001_0001_0001.tif 那里有图片吗?
  • 具有绝对路径 C:\...UriKind.Relative 的 Uri 没有任何意义。
  • @Clemens 所以我删除了 UriKind.Relative,也尝试了 UriKind.Absolute,但图像也没有显示。知道我应该如何改变它吗?

标签: c# wpf image xaml wpf-controls


【解决方案1】:

您的imageCanvas 的宽度和高度始终为零,因为您既没有添加任何子项,也没有明确设置其WidthHeight

将您的 XAML 更改为仅使用一个 Canvas,并可选择(取决于要添加的外部容器和子容器)设置其 WidthHeight 属性:

<Canvas x:Name="overlayCanvas" Height="333" Width="500">
    <Canvas.Background>
        <ImageBrush x:Name="image1" ... />
    </Canvas.Background>                    

    <Rectangle ... />
</Canvas>

【讨论】:

  • 没有不工作......没有图像显示。我还将 Width="1" Height="2" 更改为 Width="100" Height="200" ,仍然无法正常工作.....
  • 您可以通过将BitmapImage 分配给图像控件的Source 属性来检查您的图像。
  • 我发现了一个例外,关于元数据。我在原始线程中进行了更新,但无法解释这意味着什么。有机会看看吗?谢谢。
  • 那只是表示BitmapImage不支持Metadata属性。没关系。
  • 好的。我可能应该继续寻找。谢谢。
【解决方案2】:

导致问题的是堆栈面板。我不知道为什么,但如果其中一些被删除,那么图像就会出现。删除了一些堆栈惩罚的 xaml 如下所示:

<StackPanel HorizontalAlignment="Left">
                <!--Controls:MenuControl/-->
                <Controls:ToggleButtonControl Margin="0,0,0,0" Height="43" RenderTransformOrigin="0.5,-0.233"  />
            </StackPanel>

            <Canvas x:Name="imageCanvas"
                    RenderOptions.BitmapScalingMode="NearestNeighbor"
                    RenderOptions.EdgeMode="Aliased" Margin="0,52,0,0">
                    <Canvas.Background>
                <ImageBrush x:Name="image1"
                                Stretch="None"
                                AlignmentX="Left"
                                AlignmentY="Top"
                               ImageSource="{Binding Path=Bitmap, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}">
                </ImageBrush>
                    </Canvas.Background>                    
                </Canvas>

【讨论】:

    猜你喜欢
    • 2014-12-16
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 2017-02-05
    相关资源
    最近更新 更多