Modificaton des dimensions d'un panel

jesaipa_1 Messages postés 63 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 16 mai 2007 - 8 janv. 2006 à 01:12
jesaipa_1 Messages postés 63 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 16 mai 2007 - 8 janv. 2006 à 20:43
slt tout le monde, je suis actuellementen stage. On me demande de modifier certains parametre de la fonction panel cad a la place d'avoir un panel rectangulaire il faut que je puisse changer les dimensions du panel o lieu d'avoir un panel rectangulaire, avoir un panel rond ou sous la forme d'un losange.

PS : je débute en c#

Merci d'avance

4 réponses

cs_thebigboss Messages postés 216 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 12 avril 2017 2
8 janv. 2006 à 10:42
J'ai déjà testé ce conseil trouvé sur le forum concernant des Form peut-être que tu peux essayer de l'appliquer à un panel en remplacant this par le nom de ton panel....:

Essaye avec une bmp et les parties qui seront transparente, tu les mets en rouge !!!... Puis :


this.FormBorderStyle = FormBorderStyle.None ;


//Bitmap bmp = new Bitmap(this.GetType(), "TonImage.bmp") ;
Bitmap bmp = new Bitmap("TonImage.bmp") ;
bmp.MakeTransparent(Color.Red) ;
this.BackgroundImage = bmp ;
this.TransparencyKey = Color.Black ;

c'est pas dit que ça marche, mais si ça peu te débloquer...
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
8 janv. 2006 à 13:24
Hello,
Peut-être que ceci pourra t'aider : http://www.csharpfr.com/code.aspx?ID=25252


<HR>

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
8 janv. 2006 à 19:02
Salut, avec les bitmaps transparents il peut y'avoir des problèmes si le mode de couleur n'est pas en 32 bits, il faut mieux utiliser les régions.


GraphicsPath path = new GraphicsPath( );
path.AddEllipse( 0, 0, 100, 100 );
this.panel1.Region = new Region( path );


Voila comment faire une forme ou un contôle avec une région détaillée issue d'une image.


using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;


namespace Lutinore
{
class MainForm : Form
{
private const int WM_NCHITTEST = 0x84;


private MainForm( ) : base( )
{
// Utilise le premier pixel comme couleur transparente.
Bitmap bmp = new Bitmap( "kawai.bmp" );
Color key = bmp.GetPixel( 0, 0 );


// Alt + F4 pour quitter.
this.ClientSize = bmp.Size;
this.BackgroundImage = bmp;
this.FormBorderStyle = FormBorderStyle.None;
this.Region = MakeRegionFromBitmap( bmp, key );
}


// Bitmap sans compression avec une couleur de fond unique !
// On peut utiliser Bitmap.LockBits pour accélérer le traitement.
private Region MakeRegionFromBitmap( Bitmap bitmap, Color transparency )
{
if ( bitmap == null )
throw new ArgumentNullException( );


int width = bitmap.Width;
int height = bitmap.Height;
GraphicsPath path = new GraphicsPath( );


for ( int y = 0; y < height; y++ )
{
for ( int x = 0; x < width; x++ )
{
if ( bitmap.GetPixel( x, y ) != transparency )
{
path.AddRectangle( new Rectangle( x, y, 1, 1 ) );
}
}
}


Region region = new Region( path );
path.Dispose( );
path = null;


return region;
}


// Permet de deplacer la forme sans barre de titre.
protected override void WndProc( ref Message m )
{
base.WndProc( ref m );


if ( m.Msg == WM_NCHITTEST )
{
if ( ( int )m.Result == 1 )
{
m.Result = ( IntPtr )2;
}
}
}


[ STAThread ]
private static void Main( )
{
Application.Run( new MainForm( ) );
}
}
}


Le résultat : http://up.mezimages.com/up/303006Lutinore.jpg
0
jesaipa_1 Messages postés 63 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 16 mai 2007
8 janv. 2006 à 20:43
Merci pour vos réponses, je l'ai testeré demain en entreprise.
0
Rejoignez-nous