【问题标题】:Displaying Image in Image Control vs Grid/Canvas Background在图像控件与网格/画布背景中显示图像
【发布时间】:2018-01-16 11:46:21
【问题描述】:

在显示图像时,WPF 中似乎存在一些冗余。

在我当前的应用程序中,看起来我可以:

  • 使用ImageControl
  • 使用Grid(在网格内)并设置Grid.Background 属性。
  • 使用Canvas 并设置Background 属性。

似乎大多数控件都有背景属性。

我正在处理的当前程序的一部分使用图像控件来预览硬盘驱动器中的照片。使用图像控件与其他一些控件相比,它们的优势/劣势是什么?

【问题讨论】:

  • 在其他元素的背景(或填充)中使用图像控件或 ImageBrush 并不重要。 Image 控件在大多数情况下更易于使用。

标签: c# wpf image canvas grid


【解决方案1】:

如果要显示图像,则应使用图像对象,例如 XAML 代码...

 <Image Width="250" Height="100" Source="Resources/logo.png"/>

网格并非旨在简单地包含图像,而是一种布局面板,用于包含其他项目。欲了解更多信息see here.

Canvas 也不是为此目的而设计的,相反,它们也是一种通常用于包含图形(例如多边形)的布局面板。欲了解更多信息see here.

优点和缺点,只是您将元素用于非设计目的。您应该使用适当的元素进行正确的编码实践。

编辑如果您想在图像上叠加形状,那么画布会更合适。请参阅下面的代码...

 <Canvas HorizontalAlignment="Left" Height="213" Margin="115,60,0,0" VerticalAlignment="Top" Width="214">
            <Canvas.Background>
                <ImageBrush ImageSource="images.jpg"/>
            </Canvas.Background>
            <Rectangle Fill="#FFF4F4F5" Height="66" Canvas.Left="135" Stroke="Black" Canvas.Top="108" Width="60"/>
            <Rectangle Fill="#FFF4F4F5" Height="80" Canvas.Left="10" Stroke="Black" Canvas.Top="18" Width="84"/>
        </Canvas>

【讨论】:

  • 那么如果我正在创建一个程序来在图像顶部绘制一个选择矩形,那么图像控件仍然会比 Canvas 更好吗?
  • 在这种情况下,没有画布会更合适,您会想要更改画布背景,因为画布是一种布局面板,您可以在其上绘制矩形。见上面的代码^
  • 抱歉,您可能知道我是回答问题的新手。
猜你喜欢
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-23
  • 2017-02-15
相关资源
最近更新 更多