Fenêtre windows non rectangulaire

5/5 (14 avis)

Vue 18 516 fois - Téléchargée 2 320 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
nicolasToulouse
Messages postés
31
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
11 janvier 2008

20 sept. 2007 à 15:33
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
ravomavain
Messages postés
4
Date d'inscription
mardi 16 janvier 2007
Statut
Membre
Dernière intervention
27 juin 2007

27 juin 2007 à 21:26
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;
}
}
ravomavain
Messages postés
4
Date d'inscription
mardi 16 janvier 2007
Statut
Membre
Dernière intervention
27 juin 2007

27 juin 2007 à 20:42
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?
Heandel
Messages postés
4
Date d'inscription
mercredi 21 juin 2006
Statut
Membre
Dernière intervention
10 novembre 2008

16 mai 2007 à 11:50
@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 :)
nycos62
Messages postés
11
Date d'inscription
vendredi 7 mars 2003
Statut
Membre
Dernière intervention
30 juillet 2007

14 mai 2007 à 12:52
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;

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.