Site icon Blog ARC Optimizer

Une image qui vaut mille mots: découvrez WinForms PictureBox


La première version Telerik UI pour WinForms pour 2021 a apporté à nos clients un tout nouveau thème Office2019Light Toast notifications RadPictureBox Thème Metro avec images vectorielles et prise en charge de Visual Studio au moment du design dans .NET Core / .NET 5.0 . Dans ce blog, nous examinerons plus en détail RadPictureBox, ses fonctionnalités et même une démo entièrement fonctionnelle.

Décrivons d'abord ce qu'est une RadPictureBox. Semblable aux images encadrées que nous accrochons à nos murs, une commande de boîte à images nous permet de «suspendre» des images dans nos applications. En effet, RadPictureBox est conçu pour afficher des images et interagir avec elles. Le contrôle prend en charge les formats d'image raster bien connus tels que PNG, JPG, BMP, ICO, etc. Afin d'étendre la prise en charge des images vectorielles que nous avons introduites dans R2 2020 nous avons fourni la prise en charge des SVG (graphiques vectoriels évolutifs) dans RadPictureBox.

Caractéristiques

Les principales fonctionnalités du tout nouveau contrôle RadPictureBox sont :

Panneaux

Les panneaux, ou barres d'outils, fournissent un moyen facile d'ajouter de nouvelles fonctionnalités au contrôle RadPictureBox. Les barres d'outils sont positionnées sur les quatre côtés de la commande – en haut, en bas, à gauche et à droite.

Modes de panneau

Les panneaux peuvent être affichés dans trois modes différents:

  • Toujours – Les panneaux seront visibles à tout moment.
  • OnMouseHover – Les panneaux ne sont affichés que lorsque la souris se trouve sur le contrôle de la zone d'image.
  • Aucun – Les panneaux ne sont pas visibles et vous devez les afficher par programme.

Ces modes sont contrôlés par le PanelDisplayMode du contrôle.

Priorité horizontale ou verticale

RadPictureBox peut organiser avec priorité le panneau horizontal ou vertical, qui est contrôlé avec la propriété PanelOverflowMode.

La différence entre les deux modes est illustrée dans la capture d'écran ci-dessous:

Collections d'objets

Le panneau supérieur a Left, Center et RightItems, qui vous permettent d'ajouter directement des éléments dans chaque coin ou au centre du panneau, sans besoin d'écrire des mises en page personnalisées.

De plus, chacune des collections d'éléments est hébergée par une pile d'éléments, qui est un élément visuel responsable de la mise en page des éléments et fournit différentes options de personnalisation telles que la définition des couleurs et des bordures d'arrière-plan et contrôle de la distance entre les éléments.

this .radPictureBox1.TopPanel.CenterElementsStack.ElementSpacing = 3;

this .radPictureBox1.TopPanel.BackColor = Color.FromArg (100, Color.DarkBlue);

this .radPictureBox1.TopPanel.BorderColor = Color.FromArgb (100, Color.DarkBlue);

Démo

Après avoir discuté à travers le contrôle et ses panneaux, nous allons créer une démo ensemble en utilisant RadPictureBox. 😋 Le but est de créer une application qui parcourt les images dans un certain répertoire.

Commençons par créer un nouveau formulaire Windows. Faites glisser un contrôle RadPictureBox de la boîte à outils et ancrez-le pour le remplir. Nous n'utiliserons plus le concepteur, nous pouvons donc le fermer.

Pour naviguer dans les images du répertoire, nous ajouterons deux boutons à gauche et à droite. Et voici à quoi ressemble le constructeur de notre formulaire:

public RadForm1 ()

{

this [19659024] .InitializeComponent ();

RadButtonElement previousButton = nouveau RadButtonElement ();

previousButton.ToolTipText = "Image précédente" ;

previousButton.Text = [19659047] " ue016" ;

previousButton.CustomFont = "TelerikWebUI" ; [19659004] previousButton.CustomFontSize = 16;

previousButton.Click + = this .PreviousButton_Click; [19659004] this .radPictureBox1.LeftPanel.CenterItems.Add (previousButton);

RadButtonElement nextButton = nouveau RadButtonElement ();

nextButton.ToolTipText = "Image suivante" ;

nextButton.Text = " ue014" ;

nextButton.CustomFont = "TelerikWebUI" ;

nextButton.CustomFontSize = 16;

nextButton.Click + = this .NextButton_Click; [19659004] this .radPictureBox1.RightPanel.CenterItems.Add (nextButton);

}

Voici comment ressemble:

L'arrière-plan du panneau occupe tout le contrôle de haut en bas. Nous pouvons le supprimer en définissant DrawFill et DrawBorder des panneaux gauche et droit sur false.

this .radPictureBox1.LeftPanel.DrawFill = false ];

this .radPictureBox1.LeftPanel.DrawBorder = false ;

this . radPictureBox1.RightPanel.DrawFill = false ;

this .radPictureBox1.RightPanel.DrawBorder = false ;

Voici le résultat 👏:

this .radPictureBox1.LeftPanel.CenterEleme ntsStack.Padding = nouveau Padding (3);

this .radPictureBox1.LeftPanel.CenterElementsStack.DrawFill = true ;

ceci .radPictureBox1.LeftPanel.CenterElementsStack.DrawBorder = true ;

this .radPictureBox1 .LeftPanel.CenterElementsStack.BackColor = Color.FromArgb (175, Color.DarkSlateBlue);

this .radPictureBox1.LeftPanel.CenterElementsStack.BorderCrolor = Color.FromElementsStack.BorderColor = Color.FromElementsStack.BorderColor .DarkSlateBlue);

this .radPictureBox1.RightPanel.CenterElementsStack.Padding = nouveau Padding (3);

this .radPictureBox1.RightPanel.CenterElementsStack.DrawFill = true ;

this .radPict ureBox1.RightPanel.CenterElementsStack.DrawBorder = true ;

this .radPictureBox1.RightPanel.CenterElementsStack.BackColor = Color.FromArueBlate.Delate.BackColor = Color.FromAruegbate );

this .radPictureBox1.RightPanel.CenterElementsStack.BorderColor = Color.FromArgb (175, Color.DarkSlateBlue);

Les boutons sont désormais très clairement visibles. 😄

this .radPictureBox1.LeftPanel.DisplayProperty = RadElement.PositionOffsetProperty;

this [1 9659024] .radPictureBox1.RightPanel.DisplayProperty = RadElement.PositionOffsetProperty;

En plus de cela, chaque panneau fournit deux propriétés, VisibleValue et HiddenValue qui sont respectivement 1 . et 0 lorsque nous utilisons la propriété Opacity . Nous devons changer leurs valeurs en une valeur valide pour la propriété PositionOffset .

// Réinitialiser l'opacité à sa valeur visible

this . radPictureBox1.LeftPanel.Opacity = 1;

this .radPictureBox1.RightPanel.Opacity = 1;

// Chargez l'arborescence des éléments, afin que nous puissions avoir des limites valides des panneaux

this .radPictureBox1.LoadElementTree ();

this .radPictureBox1.LeftPanel.VisibleValue = nouveau SizeF (0, 0);

this .radPictureBox1.LeftPanel.HiddenValue = new SizeF (- this .radPictureBox1.LeftPanel.Bounds.Width, 0 );

this .radPictureBox1.RightPanel.VisibleValue = new SizeF (0, 0);

this .radPictureBox1.RightPanel.HiddenValue = new SizeF ( this .radPictureBox1.RightPanel.Bounds.Width, 0);

Belle animation de diapositives pour les boutons de navigation. 😇

Jusqu'à présent, nous avons ajouté quelques boutons à notre commande de boîte d'image et personnalisé les panneaux. Maintenant, ajoutons les chemins de toutes les images situées dans le dossier «Images» de notre projet, stockons-les dans une collection et affichons la première image dans le champ RadPictureBox:

// Enregistrer tous les chemins d'images dans une liste

private List < string > chemins;

// Stocke l'index de l'image sélectionnée, nous l'utiliserons lors de la navigation avec boutons

private int selectedImageIndex;

public RadForm1 ()

{

// ... code précédent

this .selectedImageIndex = 0;

this .paths = Directory.EnumerateFiles (@ ) ".. .. Images" ). ToList ();

this .radPictureBox1.Image = Image.FromFile ( this .paths [ this .selectedImageIndex] );

}

La dernière étape consiste à rendre les boutons précédent et suivant pleinement fonctionnels:

private void PreviousButton_Click ( ] objet expéditeur, EventArgs e)

{

this .selectedImageIndex -;

if ( this .selectedImageIndex <0)

{

this .selectedImageIndex = this .paths.Count - 1;

}

this .radPictureBox1.Image = Image.FromFile ( this .paths [ this .selectedImageIndex]);

}

private void NextButton_Click ( object expéditeur, EventArgs e)

{

this .selectedImageIndex ++;

if ( this .selectedImageIndex> = this .paths.Count)

{

this .selectedImageIndex = 0;

}

thi s .radPictureBox1.Image = Image.FromFile ( this .paths [ this .selectedImageIndex]);

}

Et le résultat 😍:

UI pour le portail de commentaires Winforms et nous faire savoir si vous avez des suggestions pour des fonctionnalités / contrôles particuliers.

Si vous n'avez pas essayé l'interface utilisateur Telerik pour WinForms, vous devriez consultez notre essai gratuit ou, mieux encore, parcourez toutes nos suites d'interface utilisateur dans le bundle DevCraft !




Source link
Quitter la version mobile