2016-01-02 2 views
0

я выбрать папку с помощью кода VB .net.my, как below--печать изображений из папки в VB .NET с 8 изображений на странице

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    If (FolderBrowserDialog1.ShowDialog() = DialogResult.OK) Then 
     TextBox1.Text = FolderBrowserDialog1.SelectedPath 

    End If 
End Sub 

Но проблема в том, что я не есть какие-либо идея об отображении изображений (8 изображений на одной странице)

+0

У вас есть код 'page'? Вам нужно иметь 8 ящиков для изображений и просто заменять их новыми изображениями, когда пользователь меняет «страницу».Как только у вас будет страница, все будет намного проще. – Ian

+0

извините, у меня нет кода страницы. – Kevin

+0

У вас есть форму? 'form' - ваша' страница' (если у вас нет меньшего элемента управления, например 'Panel' в' form'), просто добавьте 8 'PictureBox' в вашу' Form' и две кнопки 'Prev Page' и' Next Page'. Затем проследите, на какую 'страницу' вы находитесь' int index'. Основываясь на 'index', вы можете загрузить изображения, которые должны быть помещены в 8' PictureBox', правильно в соответствии с тем, что вводится пользователем (они: щелчок «Следующая страница» или «Предыдущая страница») – Ian

ответ

0

VB.Net Версия:

  1. Поскольку вы хотите создать предварительный просмотр печати, я хотел бы предложить вам создать новый Form только для предварительного просмотра печати и отслеживать PageNumber, которые пользователь вводит

    Dim pageNumber As Integer = 0 'start from 0, but change this according to the user input accordingly 
    
  2. Вы можете получить список файлов из заданной папки с помощью Directory.GetFiles в System.IO

    Dim rawpaths As List(Of String) = Directory.GetFiles(folder).ToList() 'This gets all files, not only images 
    
  3. Вам может понадобиться для предоставления списка допустимого расширения изображения согласно this.

    Dim validImageFormat As New List(Of String) From {"jpg", "bmp", "png", "jpeg", "gif", "tiff"} 
    
  4. и фильтровать результаты поиска файлов таким образом, что они содержат только приемлемые результаты изображения, как это (используя Split метод, Contains и т.д ...)

    Dim paths As List(Of String) = New List(Of String) 
    For Each rawpath As String In rawpaths 
        Dim rawwords As String() = rawpath.Split(".") 'split the rawpath, the important is the last element, which is the file extension 
        If (validImageFormat.Contains(rawwords(rawwords.Length - 1))) Then 'the rawpath is a valid image path 
         paths.Add(rawpath) 'this is a valid image path 
        End If 
    Next 
    
  5. Затем в вашем предварительном просмотре печати Form вам может потребоваться перечислить ваши 8 ListBox es, чтобы облегчить вам управление дисплеем позже, а также для обработки случая, когда количество изображений не умножается на 8

    Dim pbList As List(Of PictureBox) = New List(Of PictureBox) 
    Private Sub printPreviewForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
        pbList.Add(PictureBox1) 'list your picture box will help you later 
        pbList.Add(PictureBox2) 
        pbList.Add(PictureBox3) 
        pbList.Add(PictureBox4) 
        pbList.Add(PictureBox5) 
        pbList.Add(PictureBox6) 
        pbList.Add(PictureBox7) 
        pbList.Add(PictureBox8) 
    End Sub 
    
  6. Затем вам нужно определить, сколько снимков будут показаны (мин 1, макс 8, на основе PageNumber)

    If (pageNumber * 8 > paths.Count) Then 'exceeds the possible image display 
        Return 'this is not allowed, do something 
    End If 
    Dim minPathNo As Integer = pageNumber * 8 'get the min and max for later display 
    Dim maxPathNo As Integer = Math.Min(pageNumber * 8 + 7, paths.Count - 1) 
    
  7. Наконец, для отображения, вы можете использовать Image.FromFile() метод, чтобы загрузить файл изображения из папки и с помощью minPathNo и maxPathNo объявленной перед тем, чтобы показать изображения безопасно

    If (pageNumber * 8 > paths.Count) Then 'exceeds the possible image display 
        Return 'this is not allowed, do something 
    End If 
    Dim minPathNo As Integer = pageNumber * 8 
    Dim maxPathNo As Integer = Math.Min(pageNumber * 8 + 7, paths.Count - 1) 
    For i As Integer = minPathNo To minPathNo + 7 
        Dim pbIndex As Integer = i - minPathNo 
        If i <= maxPathNo Then 
         pbList(pbIndex).Image = Image.FromFile(paths(i)) 'display existing image 
        Else 
         pbList(pbIndex).Image = Nothing 'don't display non-existing image 
        End If 
    Next 
    

Edit:

Предположим, что ваша форма выглядит следующим образом:

enter image description here

Тогда это как ваш код будет выглядеть только в одной форме. В вашем случае, вы должны сделать две формы:

Imports System.IO 

Public Class Form1 
    Dim folder As String = "C:\MyPics" 
    Dim validImageFormat As New List(Of String) From {"jpg", "bmp", "png", "jpeg", "gif", "tiff"} 
    Dim pbList As List(Of PictureBox) = New List(Of PictureBox) 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim rawpaths As List(Of String) = Directory.GetFiles(folder).ToList() 'Assuming all the file is image 
     Dim paths As List(Of String) = New List(Of String) 
     For Each rawpath As String In rawpaths 
      Dim rawwords As String() = rawpath.Split(".") 'split the rawpath, the important is the last element, which is the file extension 
      If (validImageFormat.Contains(rawwords(rawwords.Length - 1))) Then 'the rawpath is a valid image path 
       paths.Add(rawpath) 'this is a valid image path 
      End If 
     Next 

     Dim pageNumber As Integer = NumericUpDown1.Value 
     If (pageNumber * 8 > paths.Count) Then 'exceeds the possible image display 
      Return 'this is not allowed, do something 
     End If 
     Dim minPathNo As Integer = pageNumber * 8 
     Dim maxPathNo As Integer = Math.Min(pageNumber * 8 + 7, paths.Count - 1) 
     For i As Integer = minPathNo To maxPathNo 
      Dim currentPictureBox As Integer = i - minPathNo 
      pbList(currentPictureBox).Image = Image.FromFile(paths(i)) 
     Next 
    End Sub 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     pbList.Add(PictureBox1) 
     pbList.Add(PictureBox2) 
     pbList.Add(PictureBox3) 
     pbList.Add(PictureBox4) 
     pbList.Add(PictureBox5) 
     pbList.Add(PictureBox6) 
     pbList.Add(PictureBox7) 
     pbList.Add(PictureBox8) 
    End Sub 
End Class 

И вам нужно всего лишь изменить numericUpDown (имитируя вашу page` до 0, 1, 2, и т.д. ...)

+0

в форме1 я просмотрел папку и выбрал тогда загруженную форму 2 с помощью известных инструментов, как вы сказали, затем добавил код ниже: – Kevin

+0

Private Sub Form2_Load (ByVal sender As System.Object, ByVal e As System.EventArgs) Обрабатывает MyBase.Load Список listImages = новый список () listImages.Add (imageFromFolder) pictureBox0.Image = listImages [PageNumber * 8] pictureBox1.Image = listImages [PageNumber * 8 + 1] pictureBox2.Image = listImages [PageNumber * 8 + 2] pictureBox3.Image = listImages [pageNumber * 8 + 3] pictureBox4.Image = listImages [pageNumber * 8 + 4] ---------- У меня есть ошибки. извините за мое незнание i beginner try heart n soul End Sub – Kevin

+0

@Jannat Я обновил пример кода для версии VB.Net. Используйте его вместо версии C# – Ian

 Смежные вопросы

  • Нет связанных вопросов^_^