Je développe un Windows Mobile 5.0 et l'application avec .Net Compact Framework 2.0 SP2 avec C#.C#, Redéfinition OnPaint: transparence alpha avec double tampon
Je surcharge la méthode OnPaint sur un messagebox personnalisé qui dessine un bitmap qui remplit le formulaire entier avec la transparence alpha, et une boîte de dégradé avec un bouton et un message sur l'arrière-plan semi-transparent.
Je le teste mais il est si lent, donc je vais utiliser un double tampon. Je peux utiliser un double tampon pour dessiner la boîte de dégradé et le test, mais si j'utilise un double tampon avec le bitmap d'arrière-plan avec une transparence alpha, il ne peint pas la transparence alpha. Donc, je ne fais que double tampon avec la boîte de gradient et le message et le bouton. Le bitmap transparent de bacground est peint directement sur e.Graphics.
Je me demande si je peux sauvegarder e.Graphics sur un bitmap pour faire tout le travail et terminer la méthode OnPaint dessinant à e.Graphics ce bitmap que je l'ai enregistré auparavant.
Ceci est mon code:
protected override void OnPaint(PaintEventArgs e)
{
Graphics gxOff;
gxOff = Graphics.FromImage(bmpOffscreen);
if (!isOuterBackgroundPainted)
{
isOuterBackgroundPainted = true;
DrawingHelper.DrawAlpha(e.Graphics, outerBackground, 180, 0, 0);
// Here I don't use double buffer because Alpha Blend doesn't work with double buffer.
//DrawingHelper.DrawAlpha(gxOff, outerBackground, 180, 0, 0);
}
// Draw the gradient box
GradientFill.Fill(gxOff, rectangle, startColor, endColor, FillDirection.TopToBottom);
gxOff.DrawString(message, font, brush, textLayoutRectangle);
e.Graphics.DrawImage(bmpOffscreen, 10, 10);
base.OnPaint(e);
}
bmpOffscreen: le bitmap de tampon double. Peut-être que je peux obtenir un snapshop de forme dans bmpOffscreen et puis dessiner l'arrière-plan semi-transparent sur elle, la boîte de dégradé et le texte.
Résumé:Je souhaite utiliser un mélange alpha avec un double tampon.
Un conseil?
Je ne comprends pas. Ne sauvegardez pas e.Graphics (ne fonctionnera pas), enregistrez le bitmap. Créez-le lorsque le texte du message est affecté. –
J'ai mis à jour ma question. Je pense que si je peux enregistrer des graphiques sur un bitmap, j'utiliserais un double buffer avec. – VansFannel