2013-11-15 2 views
0

Сохраните фрагмент кода, снижающий растровое изображение в vb.net. Может кто-нибудь, пожалуйста, помогите мне понять, почему я получаю ошибку здесь, заявляя, что я пытаюсь преобразовать строку в double при сохранении изображения. как исправить это?Ошибка Преобразование ошибки в vb.net

Private Sub Timer5_Tick(sender As System.Object, e As System.EventArgs) Handles Timer5.Tick 
      x = MyRandomNumber.Next(1000) 
      screenWidth = Screen.GetBounds(New Point(0, 0)).Width 
      screenHeight = Screen.GetBounds(New Point(0, 0)).Height 
      Dim bmpScreenShot As New Bitmap(screenWidth, screenHeight) 
      Dim gfx As Graphics = Graphics.FromImage(bmpScreenShot) 
      gfx.CopyFromScreen(0, 0, 0, 0, New Size(screenWidth, screenHeight)) 
     ***bmpScreenShot.Save("D:\\screenshots\\" + x + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)*** 
    End Sub 
+0

После того, как вы исправили проблему с преобразованием, вы, вероятно, захотите изменить двойные слэши '\\' на одиночные слэбы '\' ..., поскольку двойные нужны только в C#, а не в VB.NET – freefaller

ответ

1
bmpScreenShot.Save("D:\\screenshots\\" + x.ToString() + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg) 
1

Использование & вместо + конкатенировать путь:

bmpScreenShot.Save("D:\\screenshots\\" & x & ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg) 
3

"D:\\screenshots\\" является как строка. x - двойной.

Вы пытаетесь добавить "D:\\screenshots\\" и x, и это терпит неудачу, потому что "D:\\screenshots\\" не является двойным.

Вот что компилятор пытается вам рассказать.


Посмотрите документацию на + operator:

В общем, + выполняет арифметическое сложение, когда это возможно, и сцепляет только тогда, когда оба выражения являются строками.

Типы данных выражений: выражение объекта

держит числовое значение, а другой имеет тип String,

Действие компилятором:

Если Option Strict включен, то генерировать ошибка компилятора.

Если параметр Strict is Off, то неявно преобразовать String в Double и добавить.

Если строка не может быть преобразована в двойную, то выведите исключение InvalidCastException.


для конкатенации строк использовать & operator:

Создает конкатенацию двух выражений.

... "D:\\screenshots\\" & x & ".jpg"... 

или String.Format:

String.Format("D:\\screenshots\\{0}.jpg", x) 

Урок:

Всегда используйте Option Strict On, и всегда искать документацию.

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