2017-08-08 75 views
0

看起来WPF中存在一些冗余,当涉及到显示图像时。在图像控制vs网格/画布中显示图像背景

在我目前的应用程序,它看起来像我可以:

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

看来大多数控件都有一个背景属性。

我正在使用的当前程序的一部分使用图像控件来预览硬盘中的照片。使用图像控件与其他控件的优点/缺点是否相同?

+1

如果在某个其他元素的背景(或填充)中使用Image控件或ImageBrush,则无关紧要。 Image控件在大多数情况下更易于使用。 – Clemens

回答

1

如果你想显示你应该使用图像对象,例如XAML代码的图像...

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

网格没有被设计成只包含一个图像,而不是他们是一个类型的布局面板和用于包含其他项目。欲了解更多信息see here.

画布再次不是为此目的而设计,而是他们也是一种常用于包含图形,如多边形的布局面板。欲了解更多信息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> 
+0

因此,如果我正在创建一个程序来在图像顶部绘制选择矩形,那么图像控件仍然会比Canvas更好? –

+1

在这样的情况下,没有画布会更合适,并且您希望更改画布背景,因为画布是一种布局面板,可以将矩形绘制到其上。看到上面的代码^ – samtrod

+0

道歉,你可能会告诉我新来回答问题。 – samtrod