vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
WPF-UI friert ein 
Autor: Dot
Datum: 15.10.12 15:41

Hi, folgendes ist mir aufgefallen:

Ich habe ein WPF-Projekt erstellt und in diesem ein eigenes Control erstellt.
In diesem Control werden banal Rechtecke gezeichnet. Dies geschieht dadurch, dass die 'OnRender'-Methode überschrieben wird. Alles in allem funktioniert dies sehr gut und ist auch hinreichend schnell.
Aber: Obwohl das Zeichnen der Recktecke sehr schnell geht, kann kurz nach dem Zeichnen die WPF-UI einige Sekunden nicht bedient werden.
Frage: Woran liegt dieses Verhalten? Oder mache ich hier was total falsches?

Hier der Code:

Imports System.Windows.Controls.Primitives
 
Public Class CustomControl1
    Inherits System.Windows.Controls.Control
 
    Dim sw As New Stopwatch
    Dim AnzahlRechtecke As Integer
 
    Shared Sub New()
        DefaultStyleKeyProperty.OverrideMetadata(GetType(CustomControl1), New _
          FrameworkPropertyMetadata(GetType(CustomControl1)))
    End Sub
 
 
    Protected Overrides Sub OnRender(drawingContext As DrawingContext)
        MyBase.OnRender(drawingContext)
 
        Dim myBrush As New SolidColorBrush(Colors.LimeGreen)
        Dim myPen As New Pen(myBrush, 1)
        Dim x, y As Integer
 
        sw.Reset()
        sw.Start()
        AnzahlRechtecke = 0
 
        For x = 0 To 120 - 1
            For y = 0 To 90 - 1
                drawingContext.DrawRectangle(myBrush, myPen, New Rect(8 * x, 8 _
                  * y, 5, 5))
                AnzahlRechtecke += 1
            Next
        Next
 
        sw.Stop()
 
        Debug.WriteLine(Now & vbTab & AnzahlRechtecke & " Rechtecke gezeichnte" & _
          "in " & sw.ElapsedMilliseconds & " ms")
 
    End Sub
End Class
<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="800" Width="1024" _
      xmlns:my="clr-namespace:TestWpfPerformance">
    <Grid Name="Grid1">
        <my:CustomControl1 HorizontalAlignment="Left"  x:Name="CustomControl11" _
          VerticalAlignment="Top" />
        <Button Content="Button" Height="23" HorizontalAlignment="Left" _
        Margin="869,21,0,0" Name="Button1" VerticalAlignment="Top" Width="75" _
        Click="Button1_Click" />
    </Grid>
</Window>
Class MainWindow 
 
 
    Private Sub Button1_Click(sender As System.Object, e As _
      System.Windows.RoutedEventArgs) Handles Button1.Click
        CustomControl11.InvalidateVisual()
    End Sub
End Class
Gruß Dot
0
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
WPF-UI friert ein1.440Dot15.10.12 15:41
Re: WPF-UI friert ein913Dot17.10.12 17:15
Re: WPF-UI friert ein964Manfred X17.10.12 17:52
Re: WPF-UI friert ein1.038Dot19.10.12 10:37

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel