Вывод графических файлов на компонент Image - VB (59944)

Узнай цену своей работы

Формулировка задачи:

Вывод графических файлов на компонент Image. Файлы выбираются из списка. Список файлов формируется в диалоге открытия файлов (компонент CommonDialog). Картинка масштабируется по размеру компонента Image, который занимает всю форму и изменяет размеры при изменении размеров формы. Смена файлов происходит при щелчке по изображению в зависимости от выбора кнопки на панели инструментов (следующий, предыдущий). Очень нужна помощь с написание этой программы.

Решение задачи: «Вывод графических файлов на компонент Image»

textual
Листинг программы
Option Explicit
 
Dim WithEvents Img As Image
Dim WithEvents Tbr As VBControlExtender
Dim WithEvents Lst As ListBox
Dim Cdlg As Object
Dim a As Single
Private Const tbrButtonGroup = 2, tbrDefault = 0, tbrPressed = 1
 
Private Sub Form_Load()
    Licenses.Add "MSComctlLib.ToolBar"
    Licenses.Add "MSComDlg.CommonDialog"
    Set Tbr = Me.Controls.Add("MSComctlLib.ToolBar", "tbr")
    Set Img = Me.Controls.Add("VB.Image", "img")
    Set Lst = Me.Controls.Add("VB.ListBox", "lst")
    Set Cdlg = Me.Controls.Add("MSComDlg.CommonDialog", "cdlg")
    Tbr.object.Buttons.Add(, , "Ïðåäûäóùèé", tbrButtonGroup).Value = tbrPressed
    Tbr.object.Buttons.Add , , "Cëåäóþùèé", tbrButtonGroup
    Tbr.object.Buttons.Add , , "ÄîáГ*ГўГЁГІГј", tbrDefault
    Tbr.object.BorderStyle = vbFixedSingle
    Img.Stretch = True
    Tbr.Visible = True: Img.Visible = True: Lst.Visible = True
    Cdlg.object.CancelError = True: Cdlg.object.DialogTitle = "ÄîáГ*ГўГЁГІГј èçîáðГ*æåГ*ГЁГҐ"
    Cdlg.object.Filter = "ÈçîáðГ*æåГ*ГЁГї|*.bmp;*.jpg;*.jpeg;*.gif"
End Sub
Private Sub Update()
    On Error GoTo ErrorImg
    If Lst.ListIndex < 0 Then Exit Sub
    Set Img.Picture = LoadPicture(Lst.List(Lst.ListIndex))
    a = Img.Picture.Width / Img.Picture.Height
    Call Form_Resize
    Exit Sub
ErrorImg:
    MsgBox "ГЋГёГЁГЎГЄГ* îòêðûòèÿ èçîáðГ*æåГ*ГЁГї", vbExclamation
    Lst.RemoveItem Lst.ListIndex
End Sub
Private Sub Form_Resize()
    Dim w As Long, h As Long
    If Me.ScaleWidth < 1000 Or (Me.ScaleHeight - Tbr.Height) < 1000 Then Exit Sub
    Lst.Move Me.ScaleWidth - Me.ScaleWidth / 4, Tbr.Height, Me.ScaleWidth / 4, Me.ScaleHeight - Tbr.Height
    If Not Img.Picture Is Nothing Then
        If a > 1 Then w = Me.ScaleWidth - Lst.Width: h = w / a Else h = Me.ScaleHeight - Tbr.Height: w = h * a
        Img.Move (Me.ScaleWidth - Lst.Width - w) \ 2, (Me.ScaleHeight - Tbr.Height - h) \ 2 + Tbr.Height, w, h
    End If
End Sub
Private Sub Img_Click()
    If Lst.ListCount Then
        If Tbr.object.Buttons(1).Value Then
            If Lst.ListIndex Then Lst.ListIndex = Lst.ListIndex - 1
        Else
            If Lst.ListIndex < Lst.ListCount - 1 Then Lst.ListIndex = Lst.ListIndex + 1
        End If
    End If
End Sub
Private Sub Lst_Click()
    Update
End Sub
Private Sub Tbr_ObjectEvent(Info As EventInfo)
    If Info.Name = "ButtonClick" Then
        If Info.EventParameters.Item(0).Value.Index = 3 Then
            On Error GoTo CancelDlg
            Cdlg.object.ShowOpen
            Lst.AddItem Cdlg.object.FileName
            If Lst.ListCount = 1 Then Lst.ListIndex = 0
CancelDlg:
        End If
    End If
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы