Vielen Dank für Deine Tipps!!!
Ich habe es jetzt so geändert:
Public Class Form4
Private ActivePic, NextPic As Bitmap
Private i As Integer = 0
Private PicSize As Size = New Size(560, 315)
Private Sub Form4_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ActivePic = GetPic("C:\...\XXX.JPG", PicSize)
NextPic = GetPic("C:\...\YYY.jpg", PicSize)
PB1.Image = New Bitmap(ActivePic)
PB2.Image = New Bitmap(NextPic)
End Sub
Private Function GetPic(filename As String, picsize As Size) As Bitmap
Dim bmpout As Bitmap
Using bmp As New Bitmap(filename)
Dim w, h, l, t As Integer
w = CInt(bmp.Width * picsize.Height / bmp.Height)
h = picsize.Height
If w > picsize.Width Then
h = CInt(bmp.Height * picsize.Width / bmp.Width)
w = picsize.Width
End If
l = (picsize.Width - w) \ 2
t = (picsize.Height - h) \ 2
bmpout = New Bitmap(picsize.Width + 1, picsize.Height)
Using gout As Graphics = Graphics.FromImage(bmpout)
gout.InterpolationMode = _
Drawing2D.InterpolationMode.HighQualityBicubic
gout.Clear(Color.Black)
'gout.DrawImage(bmp, New Rectangle(l, t, w, h), _
New Rectangle(0, 0, bmp.Width, bmp.Height), _
GraphicsUnit.Pixel)
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
gout.DrawImage(bmp, New Rectangle(l - 1, t - 1, w + 1, h + 1), _
New Rectangle(0, 0, bmp.Width - 1, bmp.Height), _
GraphicsUnit.Pixel)
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
End Using
End Using
Return bmpout
End Function
Private Sub Btn_LR_Click(sender As Object, e As EventArgs) Handles _
Btn_LR.Click
i = 0
Do While i <= 560 / 10
Fade(0, 0, i * 10, 315, 0, 0, i * 10, 315)
Loop
End Sub
Private Sub Btn_OU_Click(sender As Object, e As EventArgs) Handles _
Btn_OU.Click
i = 0
Do While i <= 315 / 10
Fade(0, 0, 560, i * 10, 0, 0, 560, i * 10)
Loop
Fade(0, 0, 560, 315, 0, 0, 560, 315)
End Sub
Private Sub Btn_L_Click(sender As Object, e As EventArgs) Handles _
Btn_L.Click
i = 0
Do While i <= 560 / 10
Fade(0, 0, i * 10, 315, 560 - i * 10, 0, i * 10, 315)
Loop
End Sub
Private Sub Fade(A0, A1, A2, A3, A4, A5, A6, A7)
i += 1
'Threading.Thread.Sleep(100)
Using bm As New Bitmap(PicSize.Width, PicSize.Height)
Dim g2 As Graphics = Graphics.FromImage(bm)
g2.DrawImage(ActivePic, 0, 0, PicSize.Width, PicSize.Height)
g2.DrawImage(NextPic, New Rectangle(A0, A1, A2, A3), _
New Rectangle(A4, A5, A6, _
A7), GraphicsUnit.Pixel)
Dim g As Graphics = PB1.CreateGraphics
g.DrawImage(bm, 0, 0, PicSize.Width, PicSize.Height)
End Using
End Sub
End Class Meine Alternative für gout.DrawImage(...) beseitigt die Streifen an den Rändern ???
Der rechte bzw. untere Rand des einblendenden Bildes flackert ??? |