Question

En tant que nouveau venu par rapport au MFC, je vois Contextes Device (PED) beaucoup. Je comprends vaguement qu'il ya quelque chose à voir avec le dessin, mais les détails ne sont pas très bien expliqué partout où je peux trouver. Qu'est-ce que la création d'une moyenne « Device Context compatible », et pourquoi est-il important? Qu'est-ce SelectObject faire, et comment dois-je faire une première compatible DC?

Était-ce utile?

La solution

Un contexte de périphérique est juste un endroit que le dessin se produit, donc si vous avez deux différents DC de, vous dessinez à deux endroits différents. Un peu comme un descripteur de fichier.

Contextes de l'appareil peut se référer à l'immobilier à l'écran, ou bitmaps qui vient du stockage en mémoire, et probablement d'autres endroits aussi, ce ne sont que les deux que je peux penser en ce moment.

contextes compatibles sont ceux qui ont la même organisation pixel sous-jacente, on entend par là le nombre de bits par pixel, octets par pixel, l'organisation de la couleur et ainsi de suite. contextes de périphérique bitmap de mémoire peuvent avoir une organisation que vous voulez, mais vos contextes d'écran vont être liés (éventuellement) aux tampons sur votre carte graphique, qui (selon le mode, etc.) ont une organisation de pixel très spécifique.

Avoir des contextes compatibles signifie son efficacité pour transférer des données d'image entre eux, parce que peu ou pas de traduction des données est nécessaire. À l'autre extrême, si vous avez une palette de 256 couleurs, carte 8 bits et que vous essayez de blit à un écran qui a 8 bits chacun RGBA par pixel, chaque pixel dernière exigera massant importante, car elle est copiée et si la copie incompatible bitmaps est très lent. Selon la documentation SDK Win32, au moins BitBlt () et StretchBlt () "convertir le format de couleur source pour correspondre au format de destination", il peut être fait.

Enquêter CreateCompatibleDC () et CreateCompatibleBitmap () comme points de départ pour savoir comment créer des contextes de dessin qui sont compatibles avec celles déjà existantes.

contrôles SelectObject () dont les ressources sont actuellement actives dans le contexte de l'appareil. Un contexte actuel a un stylo, une brosse, la police et bitmap. Ceux-ci font beaucoup de l'autre GDI appelle plus simple en vous permettant de spécifier moins de paramètres. Par exemple, vous ne devez pas spécifier la police lorsque vous utilisez TextOut (), mais si vous voulez changer la police, c'est là SelectObject () entre en jeu. Si vous nourrissez SelectObject () une poignée à une police, le retour valeur est une poignée à la police qui était en vigueur, et les opérations ultérieures utilisent la nouvelle police. Le comportement est le même pour les autres types de ressources, stylos, pinceaux, etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top