AJUDA C# TO VB.NET

KURTGU 19/06/2017 16:23:38
#474609
Pessoal estou tentando converter um exemplo de C# para VB mais nao estou conseguindo, se alguem conseguir agradeceria.
KERPLUNK 19/06/2017 20:15:03
#474618

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
KURTGU 19/06/2017 20:52:06
#474619
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.

KERPLUNK 19/06/2017 21:28:45
#474621
Basta ler a mensagem de erro. Declare as propriedades como Double, que é o que a exception está dizendo...
OCELOT 20/06/2017 08:26:01
#474623
Resposta escolhida
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
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)

KURTGU 20/06/2017 15:36:40
#474628
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á 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)



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