0

私はwpfで働いています。Image コントロールがある userControl があります。

image.source を介して、この userControl に BitmapImage を追加します。

次に、この userControl がキャンバスに追加されます。このキャンバスにアタッチされたコントロールには、4 つのコーナーのそれぞれをドラッグして userControl のサイズを変更できるように、装飾がアタッチされています。

私の問題は、ビットマップがuserControlでサイズ変更されないことです。

userControl のサイズが変更されたときにビットマップを再描画する簡単な方法はありますか?

ユーザー コントロールの XAML は次のとおりです。

<UserControl x:Name="cusImageControl" x:Class="StoryboardTool.CustomImage"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300" BorderThickness="0" MouseDown="cusImageControl_MouseDown">
    <Image x:Name="image"  >
        <Image.ContextMenu>
            <ContextMenu>
                <MenuItem x:Name="ContextMenuBringForward" Header="BringForward" Click="ContextMenuBringForward_Click"/>
                <MenuItem x:Name="ContextMenuSendBackward" Header="SendBackward" Click="ContextMenuSendBackward_Click"/>
            </ContextMenu>
        </Image.ContextMenu>
    </Image>
</UserControl>

public void chooseImage()
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Title = "Choose Image to Add";

            if (ofd.ShowDialog() == true)
            {
                BitmapImage bImage = new BitmapImage();
                bImage.BeginInit();
                bImage.UriSource = new Uri(ofd.FileName);
                bImage.EndInit();

                image.Width = bImage.Width;
                image.Height = bImage.Height;
                image.Source = bImage;
                //image.Stretch = Stretch.Fill;
            }
        }
4

1 に答える 1

2

コードビハインドで幅と高さを設定しているようです...これがサイズにImageなります。これの代わりにImage.Source、xaml でプロパティを設定してみてください。

<UserControl x:Class="WpfApplication1.UserControl1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    mc:Ignorable="d" 
    d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Image Source="/WpfApplication1;component/Images/ImageName.png" />
    </Grid>
</UserControl>

これを に入れると、ウィンドウMainWindow.xamlImageサイズを変更するときにサイズが変更されます。

コード内の URL を設定する必要がある場合はImage、ビュー モデルにプロパティを追加し、それをプロパティにバインドして、Source代わりにコード内の新しいパスに変更できます。

<Image Source="{Binding ViewModelSourceProperty}" /> // don't set size here

それが役立つことを願っています。

于 2013-07-19T16:15:26.753 に答える