2011-08-13 13 views
0

私はこれを使用:フェード効果のある画像を速く変更するには?

Dim i1 As Bitmap = owall.Clone 
    Dim i2 As New Bitmap(ChangingWP) 

    Dim g As Graphics = Graphics.FromImage(i1) 

    Dim cm As New Imaging.ColorMatrix(New Single()() { _ 
                New Single() {1, 0, 0, 0, 0}, _ 
                New Single() {0, 1, 0, 0, 0}, _ 
                New Single() {0, 0, 1, 0, 0}, _ 
                New Single() {0, 0, 0, current_alpha, 0}, _ 
                New Single() {0, 0, 0, 0, 1}}) 

    Dim ia As New Imaging.ImageAttributes 
    ia.SetColorMatrix(cm, Imaging.ColorMatrixFlag.Default, Imaging.ColorAdjustType.Bitmap) 

    g.DrawImage(i2, New Rectangle(0, 0, i2.Width, i2.Height), 0, 0, i2.Width, i2.Height, GraphicsUnit.Pixel, ia) 
    g.Dispose() 

    If increase Then 
     current_alpha += Speed 
    Else 
     current_alpha -= Speed 
    End If 

    SetWallpaper(i1, Layout) 
    If current_alpha >= 1 Then 
     current_alpha = 1 
     tmrBlend.Enabled = False 
     SetWallpaper(ChangingWP, Layout) 
    ElseIf current_alpha <= 0 Then 
     current_alpha = 0 
     tmrBlend.Enabled = False 
    End If 

をしかし、それはあなたが任意のアイデアを持ってfast.Doないのですか? 実際には、フェード効果で壁紙を変更しようとしています。

答えて

-1

画像自体を変更する代わりに、画像を表示するコントロールのOpacityプロパティを変更するとどうなりますか?

+0

の不透明度を変更するコントロールはありません。質問によると、このコードはwinform-controlの画像ではなく、デスクトップの壁紙を変更しているという。 – Stefan

関連する問題