Puis-je créer un contexte de périphérique qui est juste une partie d'un autre contexte de dispositif?

StackOverflow https://stackoverflow.com/questions/4551280

  •  13-10-2019
  •  | 
  •  

Question

I sont un sous-classé contrôle graphique qui prend un descripteur de contexte de dispositif, HDC, comme une entrée et utilisations pour le dessin. Mon nouveau contrôle est que le contrôle d'origine centrée sur le dessus d'une image plus grande. Je voudrais être en mesure d'appeler la méthode de tirage de contrôle d'origine () pour le code de réutilisation, mais je ne suis pas sûr comment procéder.

Voici l'idée:

void CCheckBox::DrawCtrl( HDC hdc, HDC hdcTmp, LPSIZE pCtlSize, BYTE alpha ) {
    // original method draws a checkbox
}

void CBorderedCheckBox::DrawCtrl( HDC hdc, HDC hdcTmp, LPSIZE pCtlSize, BYTE alpha ) {
    // Draw my image here
    // Create new hdc2 and hdcTemp2 which are just some portion of hdc and hdcTemp
    //   For example, hdc2 may just be a rectangle inside of hdc that is 20 pixels 
    //   indented on all sides.
    // Call CCheckBox::DrawCtrl() with hdc2 and hdcTemp2
}
Était-ce utile?

La solution

Je pense que vous pouvez être confus de ce qu'est un contexte de périphérique est. Un contexte de dispositif est un endroit dans la mémoire que vous pouvez dessiner à, que ce soit la mémoire tampon de l'écran ou d'un bitmap ou autre chose. Depuis que je suppose que vous voulez seulement dessiner sur l'écran, vous avez seulement besoin d'un DC. Pour accomplir ce que vous voulez, je recommande le passage d'un rectangle à la fonction qui lui indique où dessiner. En option, et moins bonnes performances, vous pouvez créer une nouvelle image pour la zone plus petite, et donner la fonction DC du bitmap pour dessiner sur. Maintenant que je pense à ce sujet, qui aurait pu être ce que vous vouliez dire en premier lieu: P Bonne chance

Autres conseils

Alors pas à toute épreuve, vous pouvez simuler un DC en tant que paragraphe d'un courant continu en utilisant une combinaison de SetViewportOrgEx et SelectObject avec une région coupée à la sous-zone en question.

Le problème avec cette approche est si le code de dessin utilise déjà ces API dont il a besoin pour réécrite pour être conscient qu'il a besoin de combiner son masquage et de compensation avec les décalages existants et de découpage des régions.

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