Fenêtre windows non rectangulaire

Soyez le premier à donner votre avis sur cette source.

Vue 18 355 fois - Téléchargée 2 306 fois

Description

class "RegImg"
Permet de donner la forme que l'on veut une fenêtre d'après une image quelconque et une couleur de transparence.
On peut déplacer la fenêtre avec la souris avec le bouton gauche(API Windows).
(si vous avez des conseilles pours une autre méthode autre que l'API Windows", je suis preneur)

mise à jour : rajout d'une 2eme méthode utilisant BitmapData, unsafe et les pointeurs et pour que les calculs se fassent plus rapidement.

class "ProgressForm"
Permet de faire apparaître progressivement la fenêtre à l'écran.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
31
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
11 janvier 2008

salut

super ton source

Cela dit, si tu remplaces dans les deux for (i et j)

le b.Width et le b.Height par deux variables affectées avant, tu gagnes encore
un peu de temps :)

THe Monz, Toulouse
Messages postés
4
Date d'inscription
mardi 16 janvier 2007
Statut
Membre
Dernière intervention
27 juin 2007

Je viens de trouver le problème : c'est le borderstyle qui est à none.
J'ai trouver une solution à cette adresse:
http://www.csharpfr.com/infomsg_FORMBORDERSTYLE-NONE-CREATEPARAMS-SANS-MAXIMIZE_686335.aspx

il sufit de rajouter le code suivant:

private const int WS_SYSMENU = 0x00080000;
private const int WS_MINIMIZEBOX = 0x00020000;
private const int WS_MAXIMIZEBOX = 0x00010000;
protected override CreateParams CreateParams
{
get
{
CreateParams createParams = base.CreateParams;
createParams.Style |= WS_SYSMENU;
createParams.Style ^= WS_MINIMIZEBOX;
createParams.Style ^= WS_MAXIMIZEBOX;
return createParams;
}
}
Messages postés
4
Date d'inscription
mardi 16 janvier 2007
Statut
Membre
Dernière intervention
27 juin 2007

Bonjour, est-ce normal que le menu contextuel de l'icone de la barre des tache(celui avec : restaurer, déplacer, taille, reduire, agrandir et fermer) ait disparu?
Messages postés
4
Date d'inscription
mercredi 21 juin 2006
Statut
Membre
Dernière intervention
10 novembre 2008

@Gwaihir: oui, c'est normal, si j'ai bien compris c'est parce que l'image est trop grande.
Essaie la deuxième méthode, elle marche pour toutes les tailles :)
Messages postés
11
Date d'inscription
vendredi 7 mars 2003
Statut
Membre
Dernière intervention
30 juillet 2007

En fait, il suffit de placer le pointeur un cran en avant pour éviter le décalage dans le traitement et donc le pixel blanc :

remplacer int * pi=(int *)bd.Scan0.ToInt32();
par
int * pi=(int *)bd.Scan0.ToInt32()-1;
Afficher les 14 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.