2011-12-21 17 views
1

背景ImageBrushのサイズに合わせたキャンバスがあります。キャンバスサイズを背景にイメージサイズにバインドするImageBrush

ここで問題となるのは、コントロールがインスタンス化されてから、イメージが渡されてImageBrushとして割り当てられることです。もう1つの障害は、WPFとSilverlightの両方に対してこのコントロールを行い、ImageBrushが異なる(つまり、イベントを共有しない)ということです。

編集:

<UserControl x:Class="Escalon.Annotations.AnnotationControl" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Height="400" Width="500" > 
    <ScrollViewer Name="ctlScrollViewer" HorizontalScrollBarVisibility="Auto" Height="400" Width="500"> 
     <Canvas Name="ctlSizingCanvas" > 
      <Canvas Name="ctlCanvas" Loaded="ctlCanvas_Loaded" Height="400" Width="500" 
       MouseLeftButtonDown="MouseLeftButtonDownHandler" MouseMove="Canvas_MouseMove" MouseLeftButtonUp="Canvas_MouseLeftButtonUp" > 
       <Canvas.RenderTransform> 
        <ScaleTransform x:Name="ctlZoomTransform" /> 
       </Canvas.RenderTransform> 
       <Canvas.Background> 
        <ImageBrush ImageSource="{Binding Source}" Stretch="UniformToFill" ></ImageBrush> 
       </Canvas.Background> 
      </Canvas> 
     </Canvas> 
    </ScrollViewer> 
</UserControl> 

問題は、私は、私が高さと幅を持っていないImageBrush制御を、使用している、Imageコントロールを使用していない、です。

+0

XAMLを表示できますか?おそらくCanvasの 'Height' /' Width'を画像の 'ActualHeight' /' ActualWidth'にバインドすることができます – Rachel

+0

こんにちは、グリッドの代わりにCanvasを使う特別な理由はありますか?前者は画像の大きさによってサイズが決まります。 –

+0

私はこのコントロールを使って、マウスでさまざまなコントロールを描画しています。 – PhilBrown

答えて

0

ImageBrushを使用する代わりに、イメージをキャンバスに追加し、キャンバスサイズをイメージサイズにバインドしました。

関連する問題