Resize de form quand on a suprimer les bordures en c# et bords transparent. [Résolu]

agarcia_01 51 Messages postés mardi 8 février 2005Date d'inscription 25 août 2006 Dernière intervention - 22 nov. 2005 à 20:21 - Dernière réponse : cs_badrbadr 475 Messages postés jeudi 19 juin 2003Date d'inscription 3 novembre 2008 Dernière intervention
- 27 nov. 2005 à 23:09
Bonsoir,



J'ai créé un form avec this.FormBorderStyle= FormBorderStyle.None;

et je souhaiterais quand meme pouvoir la resizé.Quelqu'un connaitrait un moyen de le faire.

J'ai vu un code en Vb mais j'y comprend rien :(



J'ai aussi aussi arrondi les coins de cette form mais je ne sais pas
comment faire pour que ce qu'il y a a l'exterieur de l'arrondi soit
transparent.



Merci de me mettre sur la voie :)



A++
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
LUDINSKI 441 Messages postés mardi 2 décembre 2003Date d'inscription 22 mai 2012 Dernière intervention - 24 nov. 2005 à 08:41
3
Merci
Si ça t'intéresse, j'ai poster une source concernant le redimensionnement !

Merci LUDINSKI 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de LUDINSKI
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 22 nov. 2005 à 20:53
0
Merci
Salut,

As tu vu cet exemple : Non-Rectangular Form ?

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
cs_badrbadr 475 Messages postés jeudi 19 juin 2003Date d'inscription 3 novembre 2008 Dernière intervention - 23 nov. 2005 à 05:41
0
Merci
pour redimension ta fenêtre, tu dois faire l'implémentation toi-même.
j'ai pas essayé mais voici une idée pour implementer le redimensionnement
Étant donné qu'il y a plus de bordure, ben tu mets une PictureBox avec un dock à droite en bas (right + bottom), ensuite, tu detecte les évenements MouseDown et MouseMove et en fonction du déplacment de la souris, tu redimensionnes ta fenêtre.

@++
Commenter la réponse de cs_badrbadr
agarcia_01 51 Messages postés mardi 8 février 2005Date d'inscription 25 août 2006 Dernière intervention - 23 nov. 2005 à 13:41
0
Merci
Merci pour ses réponses et bien je vais commencer l'implémenter et voir le code pour les form transparente :)



a+
Commenter la réponse de agarcia_01
LUDINSKI 441 Messages postés mardi 2 décembre 2003Date d'inscription 22 mai 2012 Dernière intervention - 24 nov. 2005 à 05:47
0
Merci
Salut Agarcia,

Pour débutter un redimensionnement de ta fenêtre à partir du coin inférieur droit :
J'ai mis un panel 'RedimPanel' en bas à droite de la fenêtre ayant pour la propriété Anchor : Bottom | Right;

et ensuite :

[DllImport( "User32.dll", EntryPoint = "SendMessageA" )]

public
static
extern
int SendMessage( IntPtr hwnd,
int wMsg,
int wParam,
bool lParam );

[DllImport( "User32.dll", EntryPoint = "ReleaseCapture" )]

public
static
extern
bool ReleaseCapture();

private const int
WM_SYSCOMMAND = 0x112;

private void RedimPanel_MouseDown( object
sender, System.Windows.Forms.MouseEventArgs e )
{
// Relâche la fenêtre ayant le focus

ReleaseCapture();

// Débutte le redimensionnement de la fenêtre
if( e.Button == MouseButtons.Left )
SendMessage( this.Handle, WM_SYSCOMMAND, 0xF008, false
);
}

Ca marche plutôt pas mal !
Commenter la réponse de LUDINSKI
agarcia_01 51 Messages postés mardi 8 février 2005Date d'inscription 25 août 2006 Dernière intervention - 27 nov. 2005 à 20:27
0
Merci
Merci LUDINSKI,

Je suis aller sur ton source et j'ai utiliser la methode suivante qui m'a permis
d'enlever les bords de ma fenetre tout en conservant le redimensionement !

private const int WS_CAPTION = 0x00C00000;

protected override CreateParams CreateParams
{
get
{
CreateParams createParams = base.CreateParams;
createParams.Style ^= WS_CAPTION;
return createParams;
}
}

Par contre je ne savait pas que l'on pouvait le faire de cette maniere.Je souhaiterais apprendre plus sur ces methode de creation de parametre ou comment configurer ces form.
Il y aurait pas une doc un site expliquant toutes ses astuces comment savez vous que c'est 0x00C00000 qu'il faut mettre et pas autre chose ?? C'est quoi cette objet base ?

J'ai beaucoup de chose a apprendre je le sens mais je suis bien motivé :=p

Par contre j'ai pas compris ce code :
[DllImport( "User32.dll", EntryPoint = "SendMessageA" )] je l'ai mis dans mon code et ça a pété des erreurs comme quoi il me manquerais des assembly.

c'est quoi WM_SYSCOMMAND = 0x112;?

Merci d'avance pour vos réponse .

Bonne soirée :)
Commenter la réponse de agarcia_01
cs_badrbadr 475 Messages postés jeudi 19 juin 2003Date d'inscription 3 novembre 2008 Dernière intervention - 27 nov. 2005 à 21:02
0
Merci
allons-y...
Par contre je ne savait pas que l'on pouvait le faire de cette maniere.Je souhaiterais apprendre plus sur ces methode de creation de parametre ou comment configurer ces form.
Les gens qui s'y connaissent la-dans sont ceux qui sont familier avec l'API Win32. cette dernière est le premier ensemble de fonctions (à ma connaissance) qui permettait de faire des applications windows.

Il y aurait pas une doc un site expliquant toutes ses astuces comment savez vous que c'est
0x00C00000 qu'il faut mettre et pas autre chose ?? C'est quoi cette objet base ?
MSDN est le réseau qui contient la documentation complète pour les fonctions Win32. Pour les codes hexadécimals (0x00C00000), je pense qu'on peut les retrouver dans les fichiers headers (*.h) du compilateur, mais je ne suis pas sur.
http://msdn.microsoft.com/library/en-us/dnanchor/html/anch_win32com.asp?frame=true

Par contre j'ai pas compris ce code :
[DllImport( "User32.dll", EntryPoint = "SendMessageA" )] je l'ai mis dans mon code et ça a pété des erreurs comme quoi il me manquerais des assembly.
c'est quoi WM_SYSCOMMAND = 0x112;?
À l'origine, Win32 était conçu pour fonctionner avec des languages comme le C. Ce language est un language modulaire avec comme unité principale la Fonction et non la classe. Quand on veut utiliser des fonctions du Win32, il faut les charger à partir de certains DLL. l'attiribut DLLimport demande au compilateur d'importer une fonction d'une DLL. Si ca ne fontionne pas chez toi, c'est que t'as oublié d'inclure le namespace System.Runtime.InteropServices

pour WM_SYSCOMMAND, rend toi à la page suivante:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardaccelerators/keyboardacceleratorreference/keyboardacceleratormessages/wm_syscommand.asp

Bon, j'espère que j'étais clair. Moi ausi, je ne connais pas grand chose sur les vieilles API de windows, ça datait de avant que j'achète mon premier ordi ;) mais je sais utiliser les fonctions Win32 quand j'en ai besoin

etk, bonne chance

@++
Commenter la réponse de cs_badrbadr
agarcia_01 51 Messages postés mardi 8 février 2005Date d'inscription 25 août 2006 Dernière intervention - 27 nov. 2005 à 22:59
0
Merci
Merci pour ses infos badrbadr,


J'ai fais le code suivant pour avoir une fenetre qui aurait ou non des bords si je click sur un bouton:

protected override CreateParams CreateParams
{
get
{
CreateParams createParams = base.CreateParams;
createParams.Style ^= WS_CAPTION;
return createParams;
}
}

private int WS_CAPTION ;
private bool clicked =false;

//je crée mon bouton
btnBorder = new Bouton() ;

btnBorder.Click+=new EventHandler(btnBorderClick);

private void btnBorderClick(object sender, EventArgs e)
{
if(this.clicked ==false){
this.WS_CAPTION = 0x00C00000;
this.clicked=true; // pour savoir si le bouton a été utilisé ou pas
}else
{
this.WS_CAPTION = 0;
this.clicked=false; //pour reprendre le mode de base si le bouton est //recliqué
}

Est ce qu'en mettant this.WS_CAPTION = 0; ça marcherais ?? Et comment faire pour que la form ce raffraichisse et prenne les bon param.


Merci d'avance
Commenter la réponse de agarcia_01
cs_badrbadr 475 Messages postés jeudi 19 juin 2003Date d'inscription 3 novembre 2008 Dernière intervention - 27 nov. 2005 à 23:09
0
Merci
je pense pas qu'on puisse changer ca en cours de l'execution du programme

@++
Commenter la réponse de cs_badrbadr

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.