J'ai créé un contrôle utilisateur Wpf qui affiche l'image de l'utilisateur et permet également à l'utilisateur d'agrandir ou de réduire l'image à l'aide du défilement de la souris.Il utilise le contrôle scrollviewer pour autoriser le défilement. Scrollviewer fonctionne correctement lorsque la taille de l'image est supérieure à celle de son conteneur. Mais lorsque la taille de l'image est inférieure à celle du conteneur, les parchemins ne disparaissent pas. Alors, comment faire disparaître les parchemins si l'image peut tenir dans le conteneur. Ci-dessous le XAML J'utilise:Comment faire pour Wpf scrollviewer ajuster selon la mise à l'échelle de l'image?
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<Grid Grid.Row="0">
<!--<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">-->
<Image x:Name="PdfImage" RenderTransformOrigin="0.5,0.5" MouseWheel="PdfImage_MouseWheel" ClipToBounds="True">
<Image.RenderTransform>
<ScaleTransform x:Name="scale" ScaleX="1" ScaleY="1" CenterX="0.5" CenterY="0.5" />
</Image.RenderTransform>
</Image>
<!--</ScrollViewer>-->
</Grid>
</ScrollViewer>
Voici le code que j'utilise pour permettre à l'utilisateur de zoomer ou de l'image sur:
if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
{
var st = (ScaleTransform)PdfImage.RenderTransform;
double zoom = e.Delta > 0 ? .2 : -.2;
double newXScaleValue = st.ScaleX + zoom;
double newYScaleValue = st.ScaleY + zoom;
if ((newXScaleValue >= 0.1 && newXScaleValue <= 4) && (newYScaleValue >= 0.1 && newYScaleValue <= 4))
{
st.ScaleX += zoom;
st.ScaleY += zoom;
}
}
Pouvez-vous également ajouter du code 'PdfImage_MouseWheel'? Pourquoi incluez-vous le scrollviewer interne (et la grille)? – Sinatr
@Sinatr J'ai ajouté le code. Et j'ai essayé d'ajouter scrollviewer directement sur Image et sur sa grille parente, les deux ne fonctionnaient pas. –
Votre barre de défilement disparaît-elle lorsque l'image (à sa taille initiale) correspond au ScrollViewer? –