Jeg har ingen erfaringer med metafile billeder, men det ser spændende ud. Hvis du selv ved hvordan man håndtere dem må du gerne smide den manglende del af mit eksempel ind. Ellers må andre gerne gøre det. Her er i hvert fald hvordan du kunne lave det andet.
Jeg har brugt en User Control til formålet. Så hvis du tilføjer sådan en til dit projekt, og tilføjer følgende kode (med den manglende hovedindgrediens), skulle det gerne virke. Du bruger GetStatus for at aflæse værdien, og du bruger SetStatus for at sætte værdien (fx ved start af dit program). Hvis du regner med at lave et AllOut spil, ville det være smart at lave et array (både design- og kodemæssigt) bestående af disse objekter. På den måde gør du det nemmere at holde styr på deres positioner i forhold til hinanden.
Private Status As Boolean
Public Function GetStatus() As Boolean
GetStatus = Status
End Function
Public Sub SetStatus(NewStatus As Boolean)
Status = NewStatus
Call UpdatePicture
End Sub
Private Sub UserControl_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Status = Not Status
Call UpdatePicture
End Sub
Private Sub UpdatePicture()
If Status Then
'Load metafile picture of a light bulb turned on
Else
'Load metafile picture of a light bulb turned off
End If
End Sub
Btw, hvis du på et tidspunkt vælger ikke at ville loade dine billeder fra en eller anden mappe, så anbefaler jeg at du IKKE ligger dem ind i User Control'en. Dette ville være spild af hukommelse, hvis du oprettede et helt array af dem. I dette tilfælde burde du hellere smide dem ind i din Main form, og så lade hver User Control hente dem ind derfra. Hvis det lykkedes at smide metafiles billeder ind i en picturebox, så husk på at du jo altid kan gøre den usynlig (visible=false). Så sparer du lidt ram, uden at ødelægge strukturen på nogen måde...
// Lærenem er ham, der kan stille de rigtige spørgsmål til den rigtige person...