Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: присвоение картинки PictureBox.Image Добавлено: 21.01.11 13:13  

Автор вопроса:  Flamberg
Здравствуйте, помогите, кто может.
в процессе выполнения Sub происходит сбой, ошибка не выдается, но процедура завершается и начинается другая. Вот часть кода:
    Structure Fotogr
        Dim Foto As System.Windows.Forms.PictureBox
        Dim Name As String 'имя файла
        Dim Namb As String 'номер файла
        Dim Tip As String 'расширение
        Dim fv As String 'тип 1-фото/2-видео
        Dim Zvuk As String 'имя файла со звуком
        Dim Ocenka As Short 'Оценка
        Dim Redak As Boolean 'Был ли отредактирован
        Dim datS As Date 'дата создания
        Dim datI As Date 'дата изменения
        Dim FotZ As Boolean 'подгружено ли фото
    End Structure
    Structure Save
        Dim Name As String 'имя файла
        Dim Tip As String 'расширение
        Dim Ocenka As Short 'Оценка
        Dim datS As Date 'дата создания
        Dim datI As Date 'дата изменения
        Dim FotZ As Boolean 'подгружено ли фото
        Dim H As Integer
        Dim W As Integer
    End Structure

    Public DB(10000) As Fotogr
    Public KolF As Integer 'количество фотовидео в альбоме
    Public PAlbom As String 'путь альбома

'фрагмент кода
        Dim Fls() As String = System.IO.Directory.GetFiles(PAlbom)
        Dim Fl, namF, tpF As String
        Dim i As Integer = 0
        Dim n As Integer = 0
        Dim k As Integer = 0
        Dim DBaud(10000) As AudioF
        Dim dbTMP(10000) As Save
        Dim kTMP As Integer = 0
        Dim Ris(10000) As Bitmap
        Dim GrfRis(10000) As Graphics
        Dim P1 As New Rectangle(550, 10, 150, 130)
        Dim P2 As New Rectangle(550, 160, 200, 70)

    'Читаем структуру
        If System.IO.File.Exists(PAlbom & "\db.fta") Then
            If System.IO.File.Exists(PAlbom & "\img.jpg") Then
                Dim FotoSav As New Bitmap(PAlbom & "\img.jpg")
                FileOpen(1, PAlbom & "\db.fta", OpenMode.Random)
                n = 0 : k = 0 : i = 0
                Do Until EOF(1)
                    kTMP = kTMP + 1
                    FileGet(1, dbTMP(kTMP))
                    If dbTMP(kTMP).FotZ = True Then
                        Ris(kTMP) = New Bitmap(dbTMP(kTMP).W, dbTMP(kTMP).H)
                        GrfRis(kTMP) = Graphics.FromImage(Ris(kTMP))
                        P1 = New Rectangle(0, 0, dbTMP(kTMP).W, dbTMP(kTMP).H)
                        P2 = New Rectangle(n, k, dbTMP(kTMP).W, dbTMP(kTMP).H)
                        GrfRis(kTMP).DrawImage(FotoSav, P1, P2, GraphicsUnit.Pixel)
                    End If
                    k = k + 200
                    If k > 19900 Then
                        k = 0 : n = n + 200
                    End If
                Loop
                FileClose(1)
            End If
        End If
    'сравнение
        For i = 1 To KolF
            For n = 1 To kTMP
                If DB(i).Name = dbTMP(n).Name Then
                    If DB(i).Tip = dbTMP(n).Tip And _
                        DB(i).datS = dbTMP(n).datS And _
                        DB(i).datI = dbTMP(n).datI Then
                        DB(i).FotZ = dbTMP(n).FotZ
                        DB(i).Foto.Image = Ris(n) 'При выполнении этой строки Sub завершается, остаток кода не выполняется.
                        DB(i).Ocenka = dbTMP(n).Ocenka
                    End If
                End If
            Next n
        Next i

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #1 Добавлено: 21.01.11 13:37
  1. Dim Ris(10000) As Bitmap
  2.         Dim GrfRis(10000) As Graphics

я бы на месте проги нахер бы вылетал в OutOfMemory изза отсутсвия .Dispose или Using, как минимум.
а ошибка изза того, что DB(i).Foto (тип PictureBox) не инициализирована.

А помочь тебе явно нужно с самим кодингом, нежели с ошибками. Сперва нужно освоить List(Of <type>;), Using и For Each

Ответить

Номер ответа: 2
Автор ответа:
 Flamberg



Вопросов: 9
Ответов: 10
 Профиль | | #2 Добавлено: 21.01.11 13:57
Спасибо.
";DB(i).Foto (тип PictureBox) не инициализирована" - странно что отладчик промолчал, программа будто работает (ошибок 0), построчно пришлось ловить место ошибки.
Я на Net месяца 2 пытаюсь работать, раньше только с vb6.

Может еще подскажите возможно ли получать превьюшки картинок пикселей так 200х200, не загружая картинку в полном объеме, для экономии времени выполнения (ms Picture Manager, грузится за секунды, а у меня загрузка 20 картинок идет минуту).

P.S. "освоить List(Of <type>; ), Using и For Each" - где почитать можно?

Ответить

Номер ответа: 3
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #3 Добавлено: 21.01.11 14:28
Flamberg пишет:
возможно ли получать превьюшки картинок пикселей так 200х200

В принципе, да

Flamberg пишет:
где почитать можно?
MSDN

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам