[vb6] Afbeelding centreren in achtergrond MDI-parent Form

Pagina: 1
Acties:

  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
Bij een applicatie met een Muliple Document Interface (MDI) heb ik in het eerste form (parent-form) een logo als afbeelding geplaatst. Dit kun je gewoon bij de properties van het MDIparent-formulier instellen. Deze afbeelding staat komt dan in de linkerbovenhoek en ik wil deze graag gecentreerd op het formulier hebben staan.....dus ongeacht de resolutie van de pc waar de applicatie op draait. Is dit mogelijk?

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

maak er een windows meta file van.
Je afbeelding wordt dan gestreched over het donkergrijze gedeelte van je mdi getoont

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • coldasice
  • Registratie: September 2000
  • Laatst online: 20:19

coldasice

business intelligence

Je kunt toch gewoon bij de Indeling en dan Centreren in Formulier...en volgens mij kun je ook gewoon het logo aanroepen met een .left = "center" . Hiermee kun je het handmatig afdwingen...

freelance-intelligence.info


  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
lottumracing schreef op 07 oktober 2003 @ 13:47:
Je kunt toch gewoon bij de Indeling en dan Centreren in Formulier...en volgens mij kun je ook gewoon het logo aanroepen met een .left = "center" . Hiermee kun je het handmatig afdwingen...
Kun je het specifieker uitleggen? Hoe en waar komt dat in de code te staan?

Verwijderd

Na een beetje geknutsel en gezoek op google heb ik uiteindelijk dit gevonden:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal lX As Long, ByVal lY As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal lDC As Long) As Long
Private Declare Function DeleteDC Lib "gdi32" (ByVal lDC As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal lDC As Long, ByVal hObject As Long) As Long

Private lmMemDC      As Long
Private lmHeight     As Long
Private lmWidth      As Long
Private omPic       As StdPicture

Private Sub MDIForm_Load()
    picHolder.Visible = False
    picWork.Visible = False
    picWork.AutoRedraw = True
    picWork.AutoSize = True
    lmHeight = picWork.Height
    lmWidth = picWork.Width
    
    Set omPic = picWork.Picture
    Set picWork.Picture = Nothing
    picWork.AutoSize = False
    
    lmMemDC = CreateCompatibleDC(picWork.hDC)
    Call SelectObject(lmMemDC, omPic.Handle)
End Sub

Private Sub MDIForm_Resize()
    If WindowState <> vbMinimized Then
        Dim lX As Long
        Dim lY As Long
        
        picWork.BackColor = BackColor
        Call picWork.Move(0, 0, ScaleWidth, ScaleHeight)
        
        lX = (ScaleWidth - lmWidth) \ 2: lX = lX \ Screen.TwipsPerPixelX
        lY = (ScaleHeight - lmHeight) \ 2: lY = lY \ Screen.TwipsPerPixelY
        Call BitBlt(picWork.hDC, lX, lY, lmWidth \ Screen.TwipsPerPixelX, lmHeight \ Screen.TwipsPerPixelY, lmMemDC, 0, 0, vbSrcCopy)
        Set Picture = picWork.Image
        Visible = False
        Visible = True
    End If
End Sub

Private Sub MDIForm_Unload(Cancel As Integer)
    Set omPic = Nothing
    Call DeleteDC(lmMemDC)
End Sub


Deze code moet in zijn geheel in de mdi-parent gezet worden. picHolder is een picturebox die je op je mdi-parent moet zetten (deze zal 'align-en' met de bovenkant van je mdi-parent), picwork is een picturebox die je op picholder moet zetten. picwork moet het plaatje bevatten dat je wilt tonen, picholder hoeft geen plaatje te bevatten.
Die 2 regels met 'visible=false' en 'visible=true' waren nodig om een repaint te forceren. Misschien dat dit efficienter kan, maar dat moet je zelf dan maar even uitzoeken :)

[ Voor 3% gewijzigd door Verwijderd op 07-10-2003 15:45 ]


  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
Verwijderd schreef op 07 oktober 2003 @ 15:43:
Na een beetje geknutsel en gezoek op google heb ik uiteindelijk dit gevonden:

Deze code moet in zijn geheel in de mdi-parent gezet worden. picHolder is een picturebox die je op je mdi-parent moet zetten (deze zal 'align-en' met de bovenkant van je mdi-parent), picwork is een picturebox die je op picholder moet zetten. picwork moet het plaatje bevatten dat je wilt tonen, picholder hoeft geen plaatje te bevatten.
Die 2 regels met 'visible=false' en 'visible=true' waren nodig om een repaint te forceren. Misschien dat dit efficienter kan, maar dat moet je zelf dan maar even uitzoeken :)
Werkt super! Bedankt voor de research!
Pagina: 1