AJUDA C# TO VB.NET
Pessoal estou tentando converter um exemplo de C# para VB mais nao estou conseguindo, se alguem conseguir agradeceria.
Public Function Resize(source As String, target As String) As Boolean
Using src As Image = Image.FromFile(source, True)
[ô] Check that we have an image
If src IsNot Nothing Then
Dim origX As Integer, origY As Integer, newX As Integer, newY As Integer
Dim trimX As Integer = 0, trimY As Integer = 0
[ô] Default to size of source image
newX = InlineAssignHelper(origX, src.Width)
newY = InlineAssignHelper(origY, src.Height)
[ô] Does image exceed maximum dimensions?
If origX > MaxX OrElse origY > MaxY Then
[ô] Need to resize image
If TrimImage Then
[ô] Trim to exactly fit maximum dimensions
Dim factor As Double = Math.Max(CDbl(MaxX) / CDbl(origX), CDbl(MaxY) / CDbl(origY))
newX = CInt(Math.Ceiling(CDbl(origX) * factor))
newY = CInt(Math.Ceiling(CDbl(origY) * factor))
trimX = newX - MaxX
trimY = newY - MaxY
Else
[ô] Resize (no trim) to keep within maximum dimensions
Dim factor As Double = Math.Min(CDbl(MaxX) / CDbl(origX), CDbl(MaxY) / CDbl(origY))
newX = CInt(Math.Ceiling(CDbl(origX) * factor))
newY = CInt(Math.Ceiling(CDbl(origY) * factor))
End If
End If
[ô] Create destination image
Using dest As Image = New Bitmap(newX - trimX, newY - trimY)
Dim graph As Graphics = Graphics.FromImage(dest)
graph.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
graph.DrawImage(src, -(trimX / 2), -(trimY / 2), newX, newY)
dest.Save(target, SaveFormat)
[ô] Indicate success
Return True
End Using
End If
End Using
[ô] Indicate failure
Return False
End Function
Citação::
Public Function Resize(source As String, target As String) As Boolean
Using src As Image = Image.FromFile(source, True)
[ô] Check that we have an image
If src IsNot Nothing Then
Dim origX As Integer, origY As Integer, newX As Integer, newY As Integer
Dim trimX As Integer = 0, trimY As Integer = 0
[ô] Default to size of source image
newX = InlineAssignHelper(origX, src.Width)
newY = InlineAssignHelper(origY, src.Height)
[ô] Does image exceed maximum dimensions?
If origX > MaxX OrElse origY > MaxY Then
[ô] Need to resize image
If TrimImage Then
[ô] Trim to exactly fit maximum dimensions
Dim factor As Double = Math.Max(CDbl(MaxX) / CDbl(origX), CDbl(MaxY) / CDbl(origY))
newX = CInt(Math.Ceiling(CDbl(origX) * factor))
newY = CInt(Math.Ceiling(CDbl(origY) * factor))
trimX = newX - MaxX
trimY = newY - MaxY
Else
[ô] Resize (no trim) to keep within maximum dimensions
Dim factor As Double = Math.Min(CDbl(MaxX) / CDbl(origX), CDbl(MaxY) / CDbl(origY))
newX = CInt(Math.Ceiling(CDbl(origX) * factor))
newY = CInt(Math.Ceiling(CDbl(origY) * factor))
End If
End If
[ô] Create destination image
Using dest As Image = New Bitmap(newX - trimX, newY - trimY)
Dim graph As Graphics = Graphics.FromImage(dest)
graph.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
graph.DrawImage(src, -(trimX / 2), -(trimY / 2), newX, newY)
dest.Save(target, SaveFormat)
[ô] Indicate success
Return True
End Using
End If
End Using
[ô] Indicate failure
Return False
End Function
Obrigada Pela Ajuda KerpLuck ja tinha tentado desta forma mais sempre recebo o erro nesta linha.
Basta ler a mensagem de erro. Declare as propriedades como Double, que é o que a exception está dizendo...
O problema é um pequeno erro na conversão do KERPLUNK, o problema não é ter que usar double e sim que ele espera que seja integer mas está recebendo um doublem
No C# está assim
Veja que trimX é um inteiro e divisão de inteiro por um inteiro sempre resulta em um inteiro no C#
No VB.Net divisão feita com o operador [Ô]/[Ô] resulta em um double, para ter o mesmo comportamento do C# neste caso é necessário usar o operador de divisão de inteiros, o [Ô]\[Ô], ficando
No C# está assim
graph.DrawImage(src, -(trimX / 2), -(trimY / 2), newX, newY);
Veja que trimX é um inteiro e divisão de inteiro por um inteiro sempre resulta em um inteiro no C#
No VB.Net divisão feita com o operador [Ô]/[Ô] resulta em um double, para ter o mesmo comportamento do C# neste caso é necessário usar o operador de divisão de inteiros, o [Ô]\[Ô], ficando
graph.DrawImage(src, -(trimX \ 2), -(trimY \ 2), newX, newY)
Citação::
O problema é um pequeno erro na conversão do KERPLUNK, o problema não é ter que usar double e sim que ele espera que seja integer mas está recebendo um doublem
No C# está assimgraph.DrawImage(src, -(trimX / 2), -(trimY / 2), newX, newY);
Veja que trimX é um inteiro e divisão de inteiro por um inteiro sempre resulta em um inteiro no C#
No VB.Net divisão feita com o operador [Ô]/[Ô] resulta em um double, para ter o mesmo comportamento do C# neste caso é necessário usar o operador de divisão de inteiros, o [Ô][Ô], ficandograph.DrawImage(src, -(trimX 2), -(trimY 2), newX, newY)
Obrigada Ocelot erra isso mesmo, eu achei um artigo na MS falando sobre isso obrigada...Pela ajuda.
Tópico encerrado , respostas não são mais permitidas