Bildsteuerelement rund machen ? gelöschtes Bild wird beim Runterscrollen gezeigt

  • Word

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Neptun.

    Bildsteuerelement rund machen ? gelöschtes Bild wird beim Runterscrollen gezeigt

    Hallo zusammen,

    ich lade ein Bild in ein Bildsteuerelement (Kann ich das Steuerelement auch rund machen?)
    Spoiler anzeigen

    Quellcode

    1. Private Sub Image1_Click()
    2. Dim dlgFilePicker As FileDialog
    3. Set dlgFilePicker = _
    4. Application.FileDialog(FileDialogType:=msoFileDialogFilePicker)
    5. '
    6. With dlgFilePicker
    7. .InitialFileName = "*.*"
    8. .AllowMultiSelect = False
    9. If .Show = 0 Then Exit Sub
    10. End With
    11. Image1.Picture = LoadPicture(dlgFilePicker.SelectedItems(1))
    12. End Sub


    Reicht "image1.picture = nothing nicht aus um das alte Bild dauerhaft aus dem "Zwischenspeicher?" des Bildsteuerelements zu löschen ?
    EDIT: image1.picture = pictureload/loadpicture

    Das Bild in Steuerelement 1 wird erst angezeigt, wenn ich scrolle. How can I fix this issue ?

    ---
    Sind derartige Anwendungen in Word überhaupt sinnvoll oder sollte ich lieber nach "bildeinfügen,croppen, ausrichten" verfahren um die ?"Performance-Geschwindigkeit"? nicht zu gefährden ?

    Im Endeffekt soll das eine x-seitige Datei werden. Gefühlte 10-50 Seiten^^

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „unknownhero“ ()

    ok, wie man es lösch weiß ich nun: Image1.picture = loadpicture

    Jetzt bleiben nur die Fragen ob ich ein Bild-Steuerelement rund machen kann. und wie Bilder schneller geladen werden und nicht erst beim Scrollen.

    Ich denke die Sinnhaftigkeit liegt im Auge der Betrachterin/des Betrachters.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „unknownhero“ ()

    Hallo Neptun,

    vielen Dank für deinen Lösungsweg, hab ihn ausprobiert. Klappt, aber ich denke bei meinem zu bleiben.

    Zur anderen Sache.

    heißt: ich müsste das geladene Bild quasi als kreisrund ausgeschnittenes image redrawen, richtig?

    edit +en ^^

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „unknownhero“ ()

    Hallo unknownhero,
    heißt: ich müsste das geladene Bild quasi als kreisrund ausgeschnittenes image redrawen, richtig?

    Ja, so in etwa. Probier' mal dies:

    Visual Basic-Quellcode

    1. Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
    2. Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long
    3. Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
    4. Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
    5. Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
    6. Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
    7. Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
    8. Private Declare Function FillRgn Lib "gdi32" (ByVal hdc As Long, ByVal hRgn As Long, ByVal hBrush As Long) As Long
    9. Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
    10. Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
    11. Private Const RGN_XOR = 3
    12. Private Sub UserForm_Initialize()
    13. Set Image1.Picture = LoadPicture("D:\EinBild.jpeg") ' Bildpfad hier einsetzen
    14. Call RoundImage(Image1)
    15. End Sub
    16. Private Sub RoundImage(DestImage As Image)
    17. Dim Rgn1&, Rgn2&, Color1&, Brush1&, P1hdc&, P1OldHandle&, SW&, SH&
    18. With DestImage
    19. .BorderStyle = fmBorderStyleNone
    20. .AutoSize = True
    21. SW = .Width / 0.75
    22. SH = .Height / 0.75
    23. Color1 = Me.BackColor
    24. If (Color1 And &HFF000000) = &H80000000 Then Color1 = GetSysColor(Color1 And &HFFFFFF)
    25. Rgn1 = CreateRectRgn(0, 0, SW, SH)
    26. Rgn2 = CreateEllipticRgn(0, 0, SW, SH)
    27. Call CombineRgn(Rgn1, Rgn1, Rgn2, RGN_XOR)
    28. Brush1 = CreateSolidBrush(Color1)
    29. P1hdc = CreateCompatibleDC(0)
    30. P1OldHandle = SelectObject(P1hdc, .Picture.Handle)
    31. Call FillRgn(P1hdc, Rgn1, Brush1)
    32. Call SelectObject(P1hdc, P1OldHandle)
    33. Call DeleteDC(P1hdc)
    34. Call DeleteObject(Brush1)
    35. Call DeleteObject(Rgn1)
    36. Call DeleteObject(Rgn2)
    37. .Visible = False
    38. .Visible = True
    39. End With
    40. End Sub
    Gruss,

    Neptun