Archív kategorie ‘C#’

WinForms a panel s double-bufferingem

Potřebujeme-li ve WinForms vícenásobně překreslovat panel, setkáme se s největší pravděpodobností s blikáním našeho kresleného obrazu. Je to způsobeno tím, že obraz se vykresluje postupně a navíc relativně pomalu. Abychom se tomu vyhnuli musíme použít double buffering.

Vydědíme si tedy z panelu novou třídu, která bude mít double buffering aktivovaný a budeme ji používat namísto původního panelu.

C#:
public class DoubleBufferedPanel : Panel
{
    public DoubleBufferedPanel()
    {
        this.DoubleBuffered = true;
        this.SetStyle(ControlStyles.DoubleBuffer |
          ControlStyles.UserPaint |
          ControlStyles.AllPaintingInWmPaint, true);
        this.UpdateStyles();
    }
}

WinForms a červené X vykreslené na panelu

Pokud jste se někdy pokoušeli kreslit ve WinForms na panel (konkrétně v obsluze události Paint panelu) a dostali jste místo svého výtvoru pouze červený rámeček s krásným červeným X, pak věřte, že váš kód vyprodukoval vyjímku dříve než stačil něco nakreslit. Pokud se zobrazila pouze polovina vašeho výtvarného díla, pak to může být tím, že váš kód vyprodukoval vyjímku až v polovině kreslení. Inu zajímavý způsob jak informovat o problému. Příště si vůj kód budu raději lépe hlídat sám.

Rozdíly mezi událostmi a delegáty

Nebudu psát o tom co jsou to delegáti a události v C#, ale shrnu jejich podobné a rozdílné rysy.

Kus zdrojového kódu bude výřečnější než já :)
Čti dále

Návrat nahoru
Chcete prodávat na internetu, ale nevíte jak si vytvořit eshop? Navštivte www.inshop.cz a získejte všechny potřebné informace o tvorbě eshopu. Tvorba webových stránek zdarma na webu eStranky.cz. Vytvořte si web zcela zadarmo.