windowsforms-devexpress-dot-xtrasplashscreen-dot-splashscreenmanager-ccd1b849.md
Forces the splash form to be redisplayed.
Namespace : DevExpress.XtraSplashScreen
Assembly : DevExpress.XtraEditors.v25.2.dll
NuGet Package : DevExpress.Win.Navigation
public void Invalidate()
Public Sub Invalidate
In this example, an image is displayed as a splash screen via the SplashScreenManager.ShowImage method.Custom information is painted over this image via a custom class (SplashImagePainter), whose instance is passed as a parameter to the ShowImage method. The SplashImagePainter draws text labels with custom progress information.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraSplashScreen;
namespace SplashScreenManagerSample01 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
LongInitialization();
}
protected void LongInitialization() {
BaseInitialization();
LoadFonts();
LoadTextures();
}
void BaseInitialization() {
// Set progress stage to be displayed by SplashImagePainter
SplashImagePainter.Painter.ViewInfo.Stage = "Initialization";
for(int i = 1; i <= 100; i++) {
System.Threading.Thread.Sleep(20);
// Change progress to be displayed by SplashImagePainter
SplashImagePainter.Painter.ViewInfo.Counter = i;
//Force SplashImagePainter to repaint information
SplashScreenManager.Default.Invalidate();
}
}
void LoadFonts() {
// Set progress stage to be displayed by SplashImagePainter
SplashImagePainter.Painter.ViewInfo.Stage = "Loading Fonts";
for(int i = 1; i <= 100; i++) {
System.Threading.Thread.Sleep(20);
// Change progress to be displayed by SplashImagePainter
SplashImagePainter.Painter.ViewInfo.Counter = i;
//Force SplashImagePainter to repaint information
SplashScreenManager.Default.Invalidate();
}
}
void LoadTextures() {
// Set progress stage to be displayed by SplashImagePainter
SplashImagePainter.Painter.ViewInfo.Stage = "Loading Textures";
for(int i = 1; i <= 100; i++) {
System.Threading.Thread.Sleep(20);
// Change progress to be displayed by SplashImagePainter
SplashImagePainter.Painter.ViewInfo.Counter = i;
//Force SplashImagePainter to repaint information
SplashScreenManager.Default.Invalidate();
}
}
//
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
// Close splash image
SplashScreenManager.HideImage();
}
}
}
using System;
using System.Drawing;
using System.Reflection;
using System.Windows.Forms;
using DevExpress.XtraSplashScreen;
namespace SplashScreenManagerSample01 {
static class Program {
[STAThread]
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Image image = GetImage();
// Show splash image
SplashScreenManager.ShowImage(image, true, true, SplashImagePainter.Painter);
Application.Run(new Form1());
}
static Image GetImage() {
Assembly asm = typeof(Program).Assembly;
return new Bitmap(asm.GetManifestResourceStream("SplashScreenManagerSample01.Images.DefSplashImage.png"));
}
}
}
using System.Drawing;
using DevExpress.Utils.Drawing;
using DevExpress.Utils.Text;
using DevExpress.XtraSplashScreen;
namespace SplashScreenManagerSample01 {
class SplashImagePainter : ICustomImagePainter {
static SplashImagePainter() {
Painter = new SplashImagePainter();
}
protected SplashImagePainter() { }
public static SplashImagePainter Painter { get; private set; }
ViewInfo info = null;
public ViewInfo ViewInfo {
get {
if(this.info == null) this.info = new ViewInfo();
return this.info;
}
}
#region Drawing
public void Draw(GraphicsCache cache, Rectangle bounds) {
PointF pt = ViewInfo.CalcProgressLabelPoint(cache, bounds);
cache.Graphics.DrawString(ViewInfo.Text, ViewInfo.ProgressLabelFont, ViewInfo.Brush, pt);
}
#endregion
}
class ViewInfo {
public ViewInfo() {
Counter = 1;
Stage = string.Empty;
}
public int Counter { get; set; }
public string Stage { get; set; }
public PointF CalcProgressLabelPoint(GraphicsCache cache, Rectangle bounds) {
const int yOffset = 40;
Size size = TextUtils.GetStringSize(cache.Graphics, Text, ProgressLabelFont);
return new Point(bounds.Width / 2 - size.Width / 2, yOffset);
}
Font progressFont = null;
public Font ProgressLabelFont {
get {
if(this.progressFont == null) this.progressFont = new Font("Consolas", 10);
return this.progressFont;
}
}
Brush brush = null;
public Brush Brush {
get {
if(this.brush == null) this.brush = new SolidBrush(Color.Black);
return this.brush;
}
}
public string Text { get { return string.Format("{0} - ({1}%)", Stage, Counter.ToString("D2")); } }
}
}
Imports Microsoft.VisualBasic
Imports System
Imports System.Drawing
Imports System.Reflection
Imports System.Windows.Forms
Imports DevExpress.XtraSplashScreen
Namespace SplashScreenManagerSample01
Friend NotInheritable Class Program
Private Sub New()
End Sub
<STAThread> _
Shared Sub Main()
Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault(False)
Dim image As Image = GetImage()
' Show splash image
SplashScreenManager.ShowImage(image, True, True, SplashImagePainter.Painter)
Application.Run(New Form1())
End Sub
Private Shared Function GetImage() As Image
Dim asm As System.Reflection.Assembly = GetType(Program).Assembly
Return New Bitmap(asm.GetManifestResourceStream("DefSplashImage.png"))
End Function
End Class
End Namespace
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
Imports DevExpress.XtraSplashScreen
Namespace SplashScreenManagerSample01
Partial Public Class Form1
Inherits Form
Public Sub New()
InitializeComponent()
LongInitialization()
End Sub
Protected Sub LongInitialization()
BaseInitialization()
LoadFonts()
LoadTextures()
End Sub
Private Sub BaseInitialization()
' Set progress stage to be displayed by SplashImagePainter
SplashImagePainter.Painter.ViewInfo.Stage = "Initialization"
For i As Integer = 1 To 100
System.Threading.Thread.Sleep(20)
' Change progress to be displayed by SplashImagePainter
SplashImagePainter.Painter.ViewInfo.Counter = i
'Force SplashImagePainter to repaint information
SplashScreenManager.Default.Invalidate()
Next i
End Sub
Private Sub LoadFonts()
' Set progress stage to be displayed by SplashImagePainter
SplashImagePainter.Painter.ViewInfo.Stage = "Loading Fonts"
For i As Integer = 1 To 100
System.Threading.Thread.Sleep(20)
' Change progress to be displayed by SplashImagePainter
SplashImagePainter.Painter.ViewInfo.Counter = i
'Force SplashImagePainter to repaint information
SplashScreenManager.Default.Invalidate()
Next i
End Sub
Private Sub LoadTextures()
' Set progress stage to be displayed by SplashImagePainter
SplashImagePainter.Painter.ViewInfo.Stage = "Loading Textures"
For i As Integer = 1 To 100
System.Threading.Thread.Sleep(20)
' Change progress to be displayed by SplashImagePainter
SplashImagePainter.Painter.ViewInfo.Counter = i
'Force SplashImagePainter to repaint information
SplashScreenManager.Default.Invalidate()
Next i
End Sub
'
Protected Overrides Sub OnLoad(ByVal e As EventArgs)
MyBase.OnLoad(e)
' Close splash image
SplashScreenManager.HideImage()
End Sub
End Class
End Namespace
Imports Microsoft.VisualBasic
Imports System.Drawing
Imports DevExpress.Utils.Drawing
Imports DevExpress.Utils.Text
Imports DevExpress.XtraSplashScreen
Namespace SplashScreenManagerSample01
Friend Class SplashImagePainter
Implements ICustomImagePainter
Shared Sub New()
Painter = New SplashImagePainter()
End Sub
Protected Sub New()
End Sub
Private Shared privatePainter As SplashImagePainter
Public Shared Property Painter() As SplashImagePainter
Get
Return privatePainter
End Get
Private Set(ByVal value As SplashImagePainter)
privatePainter = value
End Set
End Property
Private info As ViewInfo = Nothing
Public ReadOnly Property ViewInfo() As ViewInfo
Get
If Me.info Is Nothing Then
Me.info = New ViewInfo()
End If
Return Me.info
End Get
End Property
#Region "Drawing"
Public Sub Draw(ByVal cache As GraphicsCache, ByVal bounds As Rectangle) Implements ICustomImagePainter.Draw
Dim pt As PointF = ViewInfo.CalcProgressLabelPoint(cache, bounds)
cache.Graphics.DrawString(ViewInfo.Text, ViewInfo.ProgressLabelFont, ViewInfo.Brush, pt)
End Sub
#End Region
End Class
Friend Class ViewInfo
Public Sub New()
Counter = 1
Stage = String.Empty
End Sub
Private privateCounter As Integer
Public Property Counter() As Integer
Get
Return privateCounter
End Get
Set(ByVal value As Integer)
privateCounter = value
End Set
End Property
Private privateStage As String
Public Property Stage() As String
Get
Return privateStage
End Get
Set(ByVal value As String)
privateStage = value
End Set
End Property
Public Function CalcProgressLabelPoint(ByVal cache As GraphicsCache, ByVal bounds As Rectangle) As PointF
Const yOffset As Integer = 40
Dim size As Size = TextUtils.GetStringSize(cache.Graphics, Text, ProgressLabelFont)
Return New Point(bounds.Width / 2 - size.Width / 2, yOffset)
End Function
Private progressFont As Font = Nothing
Public ReadOnly Property ProgressLabelFont() As Font
Get
If Me.progressFont Is Nothing Then
Me.progressFont = New Font("Consolas", 10)
End If
Return Me.progressFont
End Get
End Property
Private brush_Renamed As Brush = Nothing
Public ReadOnly Property Brush() As Brush
Get
If Me.brush_Renamed Is Nothing Then
Me.brush_Renamed = New SolidBrush(Color.Black)
End If
Return Me.brush_Renamed
End Get
End Property
Public ReadOnly Property Text() As String
Get
Return String.Format("{0} - ({1}%)", Stage, Counter.ToString("D2"))
End Get
End Property
End Class
End Namespace
The following code snippet (auto-collected from DevExpress Examples) contains a reference to the Invalidate() method.
Note
The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.
//Force SplashImagePainter to repaint information
SplashScreenManager.Default.Invalidate();
}
'Force SplashImagePainter to repaint information
SplashScreenManager.Default.Invalidate()
Next i
See Also