IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Afficher une image seule, sans Form


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 41
    Points : 31
    Points
    31
    Par défaut Afficher une image seule, sans Form
    Bonjour,
    je voudrais afficher directement à l'écran une image sans que l'on voit autre chose donc pas de Form. C'est un rond (une horloge) en GIF avec transparence.

    J'ai donc créé une WindowsApplication avec une Form invisible et dans le Form_Load je crée une classe héritée de PictureBox que j'essaie d'afficher. Voilà le code que j'ai commencé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Class Horloge
        Inherits System.Windows.Forms.PictureBox
        Sub New()
            CType(Me, System.ComponentModel.ISupportInitialize).BeginInit()
            Me.Image = Global.Reminder3.My.Resources.Resources.montre
            Me.Location = New System.Drawing.Point(27, 32)
            Me.Name = "Horloge"
            Me.Size = New System.Drawing.Size(Me.Image.Width, Me.Image.Height)  '(151, 149)  
            CType(Me, System.ComponentModel.ISupportInitialize).EndInit()
        End Sub
     End Class
    Je sais que ce n'est pas suffisant.
    Première question : est-ce qu'il est possible en VB.Net d'afficher un contrôle sans le raccrocher à une Form ? faut-il passer par des API ?
    Si je dois raccrocher ça à une Form peut-on n'afficher que la pictureBox ?
    Je suppose que dans le code que j'ai démarré il faudrait raccrocher mon contrôle "horloge" à quelque chose pour qu'il puisse s'afficher.

    Bref, si quelqu'un peut m'orienter ...
    Merci.
    Sergio

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Il suffit que tu mettes ton image comme background de la Form, et que tu définisses la propriété TransparencyKey de la Form à la couleur de fond. Avec un bout de code ce sera plus clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Form1.BackgroundImage = tonImage
    Form1.TransparencyKey = Form1.BackColor
    Pas besoin de PictureBox

    EDIT: autre méthode, plus propre à mon avis, en utilisant une région pour définir la forme de la fenêtre. Par exemple pour faire une fenêtre ronde (ou ellipsoïdale) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                Dim path As GraphicsPath = New GraphicsPath()
                path.AddEllipse(Me.Bounds)
                Me.Region = New Region(path)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    c'est nickel !

    la seconde méthode est adaptée aux figures géométriques (carré, ellipse, etc) et la première à n'importe quelle figure.
    Voilà donc le code pour les 2 méthodes et un petit snapshot de ce que je voulais faire ( il faut que je revoie les ombrages de mon gif ) :

    Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            Me.BackgroundImage = My.Resources.montre
            Me.Width = My.Resources.montre.Width        ' form = same size as background image
            Me.Height = My.Resources.montre.Height
            Me.BackgroundImageLayout = ImageLayout.Center   ' "no-repeat" image, centered
     
            ' method 1 : OK for any shape 
            Me.TransparencyKey = Me.BackColor      ' make transparent the background color 
            Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None  ' hide border and title bar
     
            ' methode 2 : better for geometrical picture (round, square, ellipse, etc)
            Dim path As GraphicsPath = New GraphicsPath()
            path.AddEllipse(0, 0, Me.Width, Me.Height)  ' ellipse "around" the bkg picture
            Me.Region = New Region(path)                ' display only the ellipse region
     
        End Sub
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher une page struts sans form
    Par charles888 dans le forum Struts 1
    Réponses: 2
    Dernier message: 13/03/2012, 11h08
  2. CIMg : Afficher une image sous la forme d'une matrice
    Par nicoblade77240 dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 26/02/2009, 10h46
  3. Afficher une image sans URL dans un forum
    Par Vanesse dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 01/03/2006, 17h55
  4. [Forms] Afficher une image stockée en base
    Par oramine dans le forum Forms
    Réponses: 12
    Dernier message: 01/02/2005, 14h14
  5. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo