Gå til innhold

Få en form til å fade ut etter en bestemt tid..?


Anbefalte innlegg

Videoannonse
Annonse
En kan også fade med Opacity egenskapen, som vel er .NET måten å gjøre det på.

8895168[/snapback]

Erfaringsmessig funker den heller dårlig, spesielt dersom man har et bakgrunnsbilde, og har en lei tendens til å hakke, og ikke se spesielt bra ut...

Lenke til kommentar

Er ute etter til vb.net ja...

Jeg får forresten ikke til dette med denne, blir bare rot når jeg slenger dette inn i en tom class.vb:

 

using System;
using System.Runtime.InteropServices;

namespace MyNameSpace
{
/// <summary>
/// Win32 implementation to show / hide a window with animation.
/// </summary>

public class WinAPI
{
/// <summary>
/// Animates the window from left to right. This flag can be used with roll or slide animation.
/// </summary>
public const int AW_HOR_POSITIVE = 0X1;
/// <summary>
/// Animates the window from right to left. This flag can be used with roll or slide animation.
/// </summary>
public const int AW_HOR_NEGATIVE = 0X2;
/// <summary>
/// Animates the window from top to bottom. This flag can be used with roll or slide animation.
/// </summary>
public const int AW_VER_POSITIVE = 0X4;
/// <summary>
/// Animates the window from bottom to top. This flag can be used with roll or slide animation.
/// </summary>
public const int AW_VER_NEGATIVE = 0X8;
/// <summary>
/// Makes the window appear to collapse inward if AW_HIDE is used or expand outward if the AW_HIDE is not used.
/// </summary>
public const int AW_CENTER = 0X10;
/// <summary>
/// Hides the window. By default, the window is shown.
/// </summary>
public const int AW_HIDE = 0X10000;
/// <summary>
/// Activates the window.
/// </summary>
public const int AW_ACTIVATE = 0X20000;
/// <summary>
/// Uses slide animation. By default, roll animation is used.
/// </summary>
public const int AW_SLIDE = 0X40000;
/// <summary>
/// Uses a fade effect. This flag can be used only if hwnd is a top-level window.
/// </summary>
public const int AW_BLEND = 0X80000;

/// <summary>
/// Animates a window.
/// </summary>
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static  extern int AnimateWindow (IntPtr hwand , int dwTime , int dwFlags);  
}
}

Er det en class til vb.net? Har ikke lekt med class før...

 

Også skal jeg bruke denne koden til å fade?:

WinAPI.AnimateWindow(this.Handle, 1000, WinAPI.AW_HIDE | WinAPI.AW_BLEND);

Endret av AnaXyd
Lenke til kommentar

Ja....

 

Classes er fundamentet i .NET

i VB6 var dette veldig halveis implementert (ingen støtte for inheritance, og kun støtte for interfaces ved å importere dem fra COM biblioteker)

VB.NET derimot er 100% objektorientert, og støtter inheritance og interfaces.

Det man bruker her er en static funksjon, altså en funksjon som ikke kan kalles fra en instansiert objekt (...)

:S dårlig forklart....

Lenke til kommentar

Det er fordi det kodeeksempelet er C#, ikke VB .NET. Disse to programmeringsspråkene er rent syntaksmessig ikke kompatibel, men ettersom rammeverket (.NET) er den samme, er det forholdsvis en smal sak å automatisk konvertere mellom disse. Mange nettsider lar deg gjøre dette gratis, eksempelvis denne.

 

Jeg har tatt meg den frihet å konvertere koden for deg:

Klikk for å se/fjerne innholdet nedenfor
]Imports System

Imports System.Runtime.InteropServices

 

Namespace MyNameSpace

''' <summary>

''' Win32 implementation to show / hide a window with animation.

''' </summary>

 

Public Class WinAPI

  ''' <summary>

  ''' Animates the window from left to right. This flag can be used with roll or slide animation.

  ''' </summary>

  Public Const AW_HOR_POSITIVE As Integer = 1

  ''' <summary>

  ''' Animates the window from right to left. This flag can be used with roll or slide animation.

  ''' </summary>

  Public Const AW_HOR_NEGATIVE As Integer = 2

  ''' <summary>

  ''' Animates the window from top to bottom. This flag can be used with roll or slide animation.

  ''' </summary>

  Public Const AW_VER_POSITIVE As Integer = 4

  ''' <summary>

  ''' Animates the window from bottom to top. This flag can be used with roll or slide animation.

  ''' </summary>

  Public Const AW_VER_NEGATIVE As Integer = 8

  ''' <summary>

  ''' Makes the window appear to collapse inward if AW_HIDE is used or expand outward if the AW_HIDE is not used.

  ''' </summary>

  Public Const AW_CENTER As Integer = 16

  ''' <summary>

  ''' Hides the window. By default, the window is shown.

  ''' </summary>

  Public Const AW_HIDE As Integer = 65536

  ''' <summary>

  ''' Activates the window.

  ''' </summary>

  Public Const AW_ACTIVATE As Integer = 131072

  ''' <summary>

  ''' Uses slide animation. By default, roll animation is used.

  ''' </summary>

  Public Const AW_SLIDE As Integer = 262144

  ''' <summary>

  ''' Uses a fade effect. This flag can be used only if hwnd is a top-level window.

  ''' </summary>

  Public Const AW_BLEND As Integer = 524288

 

  ''' <summary>

  ''' Animates a window.

  ''' </summary>

  <DllImport("user32.dll", CharSet := CharSet.Auto)> _

  Public Shared Function AnimateWindow(ByVal hwand As IntPtr, ByVal dwTime As Integer, ByVal dwFlags As Integer) As Integer

  End Function

End Class

End Namespace

Lenke til kommentar

Tusen takk for at du hjelper meg! Både i denne og den andre tråden! Du kan tydeligvis dine saker.. :) Du hjelper meg på god vei! Takk!

 

Da skal jeg prøve "fade" effekten nå..:)

 

 

Svarteste altså... Skal alltid være noe error på meg..

Slik ser koden min ut nå:

 

 

 

Imports System.Windows.Forms
Imports System.Runtime.InteropServices
Imports System


Namespace MyNameSpace
   ''' <summary>
   ''' Win32 implementation to show / hide a window with animation.
   ''' </summary>

   Public Class WinAPI
       ''' <summary>
       ''' Animates the window from left to right. This flag can be used with roll or slide animation.
       ''' </summary>
       Public Const AW_HOR_POSITIVE As Integer = 1
       ''' <summary>
       ''' Animates the window from right to left. This flag can be used with roll or slide animation.
       ''' </summary>
       Public Const AW_HOR_NEGATIVE As Integer = 2
       ''' <summary>
       ''' Animates the window from top to bottom. This flag can be used with roll or slide animation.
       ''' </summary>
       Public Const AW_VER_POSITIVE As Integer = 4
       ''' <summary>
       ''' Animates the window from bottom to top. This flag can be used with roll or slide animation.
       ''' </summary>
       Public Const AW_VER_NEGATIVE As Integer = 8
       ''' <summary>
       ''' Makes the window appear to collapse inward if AW_HIDE is used or expand outward if the AW_HIDE is not used.
       ''' </summary>
       Public Const AW_CENTER As Integer = 16
       ''' <summary>
       ''' Hides the window. By default, the window is shown.
       ''' </summary>
       Public Const AW_HIDE As Integer = 65536
       ''' <summary>
       ''' Activates the window.
       ''' </summary>
       Public Const AW_ACTIVATE As Integer = 131072
       ''' <summary>
       ''' Uses slide animation. By default, roll animation is used.
       ''' </summary>
       Public Const AW_SLIDE As Integer = 262144
       ''' <summary>
       ''' Uses a fade effect. This flag can be used only if hwnd is a top-level window.
       ''' </summary>
       Public Const AW_BLEND As Integer = 524288

       ''' <summary>
       ''' Animates a window.
       ''' </summary>
       <DllImport("user32.dll", CharSet:=CharSet.Auto)> _
       Public Shared Function AnimateWindow(ByVal hwand As IntPtr, ByVal dwTime As Integer, ByVal dwFlags As Integer) As Integer
       End Function
   End Class
End Namespace

Public Class frmInfdialog
   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
       Me.Close()
   End Sub

   Private Sub LinkLabel2_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs)
       Me.Close()
   End Sub

   Private Sub frmInfdialog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

   End Sub

   Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
       WinAPI.AnimateWindow(Me.Handle, 1000, WinAPI.AW_HIDE Or WinAPI.AW_BLEND)
   End Sub
End Class

 

 

 

Men på en måte så blir ikke WinAPI deklarert? "Name WinAPI is not declared" får jeg...

Endret av AnaXyd
Lenke til kommentar

Denne fade effekten kan ikke være 100% stabil. Noen ganger bugger den seg helt, og jeg må gjøre alt på nytt igjen. (Den funker ikke lenger, og vinduet bare lukker seg uten fade.)

 

Jeg har gjort slik at et vindu fader ut etter en bestemt tid med en timer. Det har funket, men fungerer plutselig ikke nå...

 

Slik ser koden ut:

Imports System.Windows.Forms

Public Class frmDialog
   Private Sub frmDialog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       Timer1.Start()
   End Sub

   Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
       Timer1.Stop()
       MyNameSpace.WinAPI.AnimateWindow(Me.Handle, 1000, MyNameSpace.WinAPI.AW_HIDE Or MyNameSpace.WinAPI.AW_BLEND)
       Me.Close()
   End Sub

   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
       MyNameSpace.WinAPI.AnimateWindow(Me.Handle, 1000, MyNameSpace.WinAPI.AW_HIDE Or MyNameSpace.WinAPI.AW_BLEND)
   End Sub
End Class

Klassen har jeg i en egen class.vb fil, så da slipper jeg å ha den inne her.

 

Kan noen fortelle meg hva som er feil?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...