在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 :(得分:3)
"D:\\screenshots\\"
是字符串。 x
是双倍的。
您尝试添加"D:\\screenshots\\"
和x
,但这会失败,因为"D:\\screenshots\\"
不是双倍。
这就是编译器试图告诉你的内容。
查看+
operator的文档:
通常,+尽可能执行算术加法,并且仅当两个表达式都是字符串时才连接。
表达式的数据类型:
对象表达式包含数值,另一个包含String
类型编译器采取的行动:
如果Option Strict为On,则生成编译器错误。
如果Option Strict为Off,则隐式将String转换为Double并添加。
如果String无法转换为Double,则抛出InvalidCastException异常。
要连接字符串,请使用&
operator:
生成两个表达式的字符串连接。
... "D:\\screenshots\\" & x & ".jpg"...
或String.Format
:
String.Format("D:\\screenshots\\{0}.jpg", x)
获得的经验教训:
始终使用Option Strict On
,并始终查找文档。
答案 1 :(得分:1)
bmpScreenShot.Save("D:\\screenshots\\" + x.ToString() + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
答案 2 :(得分:1)
使用&而不是+来连接路径:
bmpScreenShot.Save("D:\\screenshots\\" & x & ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)