wxLua et wxWidgets:
Mode d'emploi.
 wxWidgets
Lua
Flèche gauche accueil wxWidgets lua notes Flèche droite
Device Contexts: Vue d'ensemble des contextes de périphériques.

Un Device Context est une structure qui définit un ensemble d'objets graphiques et leurs attributs associés, ainsi que les modes graphiques.

Les objets graphiques comprennent entre autre, un crayon à dessin (wxPen), un pinceau pour peindre (wxBrush), une surface bitmap pour afficher des images ou des dessins (wxBitmap), une palette pour définir le jeu des couleurs disponibles (wxColour)...

Les classes wxWidgets concernées sont:
wxBufferedDC, wxBufferedPaintDC, wxDC, wxPostScriptDC, wxMetafileDC, wxMemoryDC, wxPrinterDC, wxScreenDC, wxClientDC, wxPaintDC, wxWindowDC.

un wxDC est un contexte de périphérique sur lequel il est possible de dessiner des graphiques et du texte.

Le contexte de périphérique est destiné à représenter un bon nombre de périphériques de sortie, et ce de façon générique, avec la même API utilisée pour tous.

Certaines de ces classes sont créées temporairement pour dessiner sur une fenêtre.
Il s'agit de: wxScreenDC , wxClientDC , wxPaintDC et wxWindowDC.

Le tableau suivant décrit les circonstances dans lesquelles vous devez utiliser ces classes.

wxScreenDC Utilisez cette option pour peindre sur l'écran.
( par opposition à une fenêtre individuelle )
wxClientDCUtilisez cette option pour peindre sur la zone client de la fenêtre, mais ne pas l'utiliser dans un wxPaintEvent
wxPaintDCUtilisez cette option pour peindre sur la zone cliente d'une fenêtre, mais seulement à partir d'un wxPaintEvent
wxWindowDC Utilisez cette option pour peindre sur toute la surface d'une fenêtre, y compris les décorations.
Cela peut ne pas être disponible sur les plates-formes non-Windows

wxDC est une classe de base abstraite qui ne peut être créée directement.

Vous devrez utiliser wxPaintDC , wxClientDC , wxWindowDC , wxScreenDC , wxMemoryDC ou wxPrinterDC.

Les Bitmaps.

La classe wxBitmap encapsule le concept d'un bitmap dépendant de la plateforme, monochromes ou couleur.

Les méthodes utilisées pour créer un bitmap sont spécifiques à la plateforme.

Une image bitmap créée dynamiquement ou chargée à partir d'un fichier peut être sélectionnée dans un Device Contexts de mémoire. ( Voir l'exemple ci-dessous avec wx.wxMemoryDC )

Pour créer un bitmap et dessiner dessus:

frame = wx.wxFrame(	wx.NULL, -1, "Device Contexts",
					wx.wxDefaultPosition, wx.wxDefaultSize,
					wx.wxDEFAULT_FRAME_STYLE)

panel = wx.wxPanel(frame, -1)

memDC = wx.wxMemoryDC()
bitmap = wx.wxBitmap(120, 120)
memDC:SelectObjectAsSource(bitmap)
memDC:SetBackground(wx.wxRED_BRUSH)
memDC:Clear()
memDC:SetPen(wx.wxBLACK_PEN)
memDC:SetBrush(wx.wxTRANSPARENT_BRUSH)
memDC:DrawRectangle(10, 10, 100, 100)
memDC:SelectObjectAsSource(wx.wxNullBitmap)

panel:Connect(wx.wxEVT_MOUSEWHEEL, function()
		local dc = wx.wxClientDC(panel)
		dc:DrawBitmap(bitmap, 0, 0, false)
		dc:delete()
	end)

frame:Show()
wx.wxGetApp():MainLoop()	
				

Pour charger et afficher une image:

	
	-- Chargement d'une image			
	local monImage = wx.wxBitmap("../image.XYZ",wx.wxBITMAP_TYPE_XYZ)	

	-- Affichage de monImage
	panel:Connect(wx.wxEVT_PAINT, function()
		local dc = wx.wxPaintDC(panel)
		dc:DrawBitmap(monImage, posx, posy, false)
		dc:delete()
	end)	
				

Ci-dessous, liste des formats autorisés par Lua.

wx.wxBITMAP_TYPE_INVALID
wx.wxBITMAP_TYPE_BMP
wx.wxBITMAP_TYPE_BMP_RESOURCE
wx.wxBITMAP_TYPE_RESOURCE
wx.wxBITMAP_TYPE_ICO
wx.wxBITMAP_TYPE_ICO_RESOURCE
wx.wxBITMAP_TYPE_CUR
wx.wxBITMAP_TYPE_CUR_RESOURCE
wx.wxBITMAP_TYPE_XBM
wx.wxBITMAP_TYPE_XBM_DATA
wx.wxBITMAP_TYPE_XPM
wx.wxBITMAP_TYPE_XPM_DATA
wx.wxBITMAP_TYPE_TIF
wx.wxBITMAP_TYPE_TIF_RESOURCE
wx.wxBITMAP_TYPE_GIF
wx.wxBITMAP_TYPE_GIF_RESOURCE
wx.wxBITMAP_TYPE_PNG
wx.wxBITMAP_TYPE_PNG_RESOURCE
wx.wxBITMAP_TYPE_JPEG
wx.wxBITMAP_TYPE_JPEG_RESOURCE
wx.wxBITMAP_TYPE_PNM
wx.wxBITMAP_TYPE_PNM_RESOURCE
wx.wxBITMAP_TYPE_PCX
wx.wxBITMAP_TYPE_PCX_RESOURCE
wx.wxBITMAP_TYPE_PICT
wx.wxBITMAP_TYPE_PICT_RESOURCE
wx.wxBITMAP_TYPE_ICON
wx.wxBITMAP_TYPE_ICON_RESOURCE
wx.wxBITMAP_TYPE_ANI
wx.wxBITMAP_TYPE_IFF
wx.wxBITMAP_TYPE_TGA
wx.wxBITMAP_TYPE_ANY

Les icônes.

Une icône* est une petite image rectangulaire généralement utilisée pour désigner une application.

Elle diffère d'un wx.wxBitmap en ayant toujours un masque qui lui est associé pour la transparence.

Sur certaines plates-formes, les icônes et les bitmaps sont mis en oeuvre de manière identique, car il n'y a pas de distinction réelle entre un wx.wxBitmap avec un masque et une icône, et il n'y a pas de format icône spécifique.

Cependant, certaines plates-formes comme Windows, font la distinction, si une catégorie distincte est fournie.

Il est généralement souhaitable d'associer une icône à une frame.

Les icônes peuvent également être utilisées à d'autres fins, par exemple avec wx.wxTreeCtrl et wx.wxListCtrl.

Une icône attribuée à un cadre sera supprimé lorsque le cadre sera supprimé.

Sous Windows, l'icône ne sera pas rechargée si elle a déjà été utilisée.

La façon de charger une icône dans un programme est similaire à celle utilisée avec un bitmap.

Exemple de code pour changer l'icône d'une frame:

local icon = wx.wxIcon(.."/Images/monIcon.ico", 
                                      wx.wxBITMAP_TYPE_ICO)

local icon = wx.wxIcon( .."/Images/monIcon.png", 
                                      wx.wxBITMAP_TYPE_PNG )  		
		
	
frame = wx.wxFrame(wx.wx.NULL, -1, "Mon petit programme")

-- Changement de l'icône de la frame. ( 16x16 ou 32x32 )
local newIcon = wx.wxIcon( "../Images/monIcon.png", 
                                      wx.wxBITMAP_TYPE_PNG )
frame:SetIcon(newIcon)		
				

* un icone ou une icône?:

Robert nous dit: Icone, nom masculin (informatique) : symbole graphique affiché sur un écran d'ordinateur qui représente et permet d'activer une fonction du logiciel.

alors que Larousse précise: Icône, n. f. (anglais icon) Informatique. Elément graphique qui, pour un logiciel, représente à l'écran un objet ou une fonction manipulable par l'utilisateur.

Personnellement je trouve que " un icone ", c'est pas jolie!.
Je vais donc me rallier à Larousse et continuer à utiliser ce mot au féminin et avec l'accent circonflexe...
Le crayon.

Le pen (crayon) est un outil de dessin.

Il est utilisé pour tracer des lignes et peindre le contour des rectangles, ellipses, etc.
Il a une couleur, une largeur et un style.

Il existe quelques couleurs prédéfinies.

wx.wxNullPen
wx.wxBLACK_DASHED_PEN
wx.wxBLACK_PEN
wx.wxCYAN_PEN
wx.wxGREEN_PEN
wx.wxGREY_PEN
wx.wxLIGHT_GREY_PEN
wx.wxMEDIUM_GREY_PEN
wx.wxRED_PEN
wx.wxTRANSPARENT_PEN
wx.wxWHITE_PEN				
				

Il existe aussi quelques styles prédéfinies.

wx.wxCAP_BUTT
wx.wxCAP_PROJECTING
wx.wxCAP_ROUND
wx.wxDOT
wx.wxDOT_DASH
wx.wxSOLID
wx.wxLONG_DASH
wx.wxSHORT_DASH
wx.wxUSER_DASH
wx.wxJOIN_BEVEL
wx.wxJOIN_MITER
wx.wxJOIN_ROUND
wx.wxTRANSPARENT
wx.wxSTIPPLE_MASK_OPAQUE
wx.wxSTIPPLE_MASK
wx.wxSTIPPLE
wx.wxBDIAGONAL_HATCH
wx.wxCROSSDIAG_HATCH
wx.wxFDIAGONAL_HATCH
wx.wxCROSS_HATCH
wx.wxHORIZONTAL_HATCH
wx.wxVERTICAL_HATCH		
				

Le "pen" se construit de la façon suivante.

 	local pen = wx.wxPen(const wx.wxColour &colour, -- la couleur
						 int width = 1, 		 -- l'épaisseur
						 wx.wxSOLID	             -- le style
						)
				

La brosse ou le pinceau.

Une brosse est un outil de dessin pour remplissage dans les zones.

Elle est utilisée pour peindre l'arrière-plan de rectangles, d'ellipses, etc.

Elle a une couleur et un style. ( dans la mesure du possible, les mêmes styles que pour le crayon )

wx.wxNullBrush
wx.wxBLUE_BRUSH				
wx.wxGREEN_BRUSH				
wx.wxWHITE_BRUSH			
wx.wxBLACK_BRUSH			
wx.wxGREY_BRUSH			
wx.wxMEDIUM_GREY_BRUSH
wx.wxLIGHT_GREY_BRUSH
wx.wxTRANSPARENT_BRUSH
wx.wxCYAN_BRUSH
wx.wxRED_BRUSH
				

La "brosse" se construit de la façon suivante.

 	local brosse = wx.wxBrush(const wx.wxColour &colour, -- couleur
						      wx.wxSOLID	             -- style
						      )
				

La palette de couleurs.

Une palette est une table qui mappe des valeurs de pixels aux couleurs RVB.

Elle permet aux couleurs d'une image bitmap à faible profondeur, par exemple, d'être mis en correspondance avec les couleurs disponibles dans un présentoir.

La notion de palettes devient de plus en plus obsolète de nos jours et seul le port MSW utilise encore une palette d'origine.

Tous les autres ports utilisent le code générique qui est juste un tableau de couleurs.

logo wx.wxWidgets Le savoir ne vaut que s'il est partagé par tous...
logo-internet_32x32.png Dernière mise à jour, le 12 décembre 2012.
Valid XHTML 1.0 Transitional

Le dessin
Revenir en Haut
Connexion à la base de données impossible