VB Express 2008 et GDI+ : clipping déconcertant...

Le
Newsgroups Microsoft
Bonsoir,

J'ai pondu un petit code pour faire un splash screen digne du 21è siècle à
une application VB2002 que je migre en VB2008.
Le clipping censé ne montrer qu'une region circulaire de ma form de
lancement (celle contenant le logo) se révèle inefficace, quelquesoit mes
tentatives d'invocation de méthodes liées à l'objet Clip.
=> elle laisse apparaitre toute la form, et c'est carrément mocheux. :)

Fais-je mal ? Ai-je oublié quelquechose ?
Je vous colle le code, ça sautera sûrement plus à vos yeux qu'aux miens
;)

Merci d'avance
--
Un projet contenant une resource graphique (le logo), une winform SplashForm
et un module Main qui contient la méthode Main invoquée comme point de
démarrage d'exécution.
SplashForm est une winform ne contenant qu'un picturebox docké fill,
affichant en centré l'image PNG contenue dans le fichier ressource.

a) Le module
Module Main
Public Sub Main()

Dim form As New SplashForm()
Application.Run(form)
End Sub
End Module


b) La form
Imports System.Drawing.Drawing2D
Public Class SplashForm

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
Dim rectangle As Rectangle
Dim path As GraphicsPath

e.Graphics.SmoothingMode = SmoothingMode.AntiAlias
rectangle = New Rectangle(106, 82, 326, 314)
path = New GraphicsPath()
path.AddEllipse(rectangle)

e.Graphics.SetClip(path, CombineMode.Intersect)

rectangle = Nothing
path.Dispose()
End Sub
End Class
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice
Le #18420001
Voir la doc qui explique comment faire :
http://msdn.microsoft.com/fr-fr/library/6k15y9et.aspx

Ici on intervient dans le tracé de la zone cliente de la fênêtre, ce qui n'a
pas spécialement d'effet tout le reste ayant été déjà tracé au préalable...

--
Patrice

"Newsgroups Microsoft" message de news:
Bonsoir,

J'ai pondu un petit code pour faire un splash screen digne du 21è siècle à
une application VB2002 que je migre en VB2008.
Le clipping censé ne montrer qu'une region circulaire de ma form de
lancement (celle contenant le logo) se révèle inefficace, quelquesoit mes
tentatives d'invocation de méthodes liées à l'objet Clip.
=> elle laisse apparaitre toute la form, et c'est carrément mocheux. :)

Fais-je mal ? Ai-je oublié quelquechose ?
Je vous colle le code, ça sautera sûrement plus à vos yeux qu'aux miens...
;)

Merci d'avance
--------------------------------------------------------------
Un projet contenant une resource graphique (le logo), une winform
SplashForm et un module Main qui contient la méthode Main invoquée comme
point de démarrage d'exécution.
SplashForm est une winform ne contenant qu'un picturebox docké fill,
affichant en centré l'image PNG contenue dans le fichier ressource.

a) Le module
Module Main
Public Sub Main()

Dim form As New SplashForm()
Application.Run(form)
End Sub
End Module


b) La form
Imports System.Drawing.Drawing2D
Public Class SplashForm

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
Dim rectangle As Rectangle
Dim path As GraphicsPath

e.Graphics.SmoothingMode = SmoothingMode.AntiAlias
rectangle = New Rectangle(106, 82, 326, 314)
path = New GraphicsPath()
path.AddEllipse(rectangle)

e.Graphics.SetClip(path, CombineMode.Intersect)

rectangle = Nothing
path.Dispose()
End Sub
End Class


Publicité
Poster une réponse
Anonyme