VB Express 2008 et GDI+ : clipping déconcertant...
1 réponse
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrice
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" a écrit dans le 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
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" <tivivi_removethis@hotmail.fr> a écrit dans le
message de news: uwiZUoPeJHA.1916@TK2MSFTNGP02.phx.gbl...
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
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" a écrit dans le 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