mystère de performance WinForms: dérivé contrôle PictureBox plus lent que l'original?
-
23-09-2019 - |
Question
Dans mon projet .NET 2.0, je fait une classe dérivée vide de System.Windows.Forms.PictureBox
:
public class NewPictureBox : PictureBox
{
//absolutely nothing
}
Alors je l'ai fait ce qui suit:
- définir à la fois la propriété de commande dérivé et
Image
de la commande de base à une image assez grande (800x600),SizeMode
estNormal
(seule la partie supérieure gauche est affichée); - accroché plusieurs des événements pour de l'
NewPictureBox
etPictureBox
si une boîte de sélection peut être tiré lors du déplacement de la souris sur la surface; - le configurer de sorte des propriétés de la zone de sélection (
Width
/Height
) seront mis à jour sur les contrôles deNumericUpDown
en temps réel.
Le problème est lorsque vous faites glisser la souris sur le réel rapide PB dérivé, il est considérable « clapotis » par rapport à faire la même chose sur la base PB. Les Width
/ valeurs Height
ne sont pas mis à jour en temps réel.
Quelqu'un sait-il pourquoi est-il comme ça? Comment puis-je obtenir la même finesse avec le contrôle dérivé? Merci!
Pour toute personne qui souhaite vérifier le projet minimal de l'échantillon avec le problème décrit:
La solution
Obtenir une image redimensionnée par PB pour adapter la commande est très cher. GDI + a un très bon filtre, mais il ne vient pas gratuitement. Redimensionner l'image vous avant de l'assigner à la propriété d'image de sorte que le PB n'a pas à le redimensionner.
L'utilisation d'un bitmap créé avec Format32bppPArgb peut faire un gros différence aussi, il est 10 fois plus rapide que tout autre format.