Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 6 - Tisk formuláře a ovládacích prvků Windows Forms

Blížíme se k závěru naší ukázky, doplníme MyClass2 funkcí KresliLine.

//MyClass2.cpp
void Kreslivbshape::KresliLine(Graphics^ gr, int xx , int yy , int count)
{
        int x1,x2,y1,y2 = 0;
        LineShape ^mlineShape = nullptr;
    for (int i = 0; i < count; i++)
    {
             mlineShape = lineShape[i];
         x1 = mlineShape->X1 + xx;
         x2 = mlineShape->X2 + xx;
         y1 = mlineShape->Y1 + yy;
         y2 = mlineShape->Y2 + yy;
             gr->Clip = gcnew Region(recMax);
             Pen^ pen = gcnew Pen(mlineShape->BorderColor,(float) mlineShape->BorderWidth);
         pen->DashStyle = mlineShape->BorderStyle;
         gr->DrawLine(pen, x1, y1, x2, y2);
         delete pen;
             gr->ResetClip();
    }
        lineShape->Clear();
        mlineShape = nullptr;
    };//Kresli lineShape

Pro pořádek musíme napsat prázdné funkce pro OvalShape a RectangleShape. Kód v těchto funkcích není
předmětem této ukázky.

//MyClass2.cpp
void Kreslivbshape::KresliOval(Graphics^ graphics,int xx , int yy, int count)
{
        //není v této ukázce
    //.......nějaký kód
};


void Kreslivbshape::KresliRectangle(Graphics^ graphics, int xx , int yy ,int count)
{
        //není v této ukázce
    //......nějaký kód
};

Testování našeho výtvoru

Nakonec nám zbývá otestování našeho programu. Přejdeme ve VS do správce konfigurace a nastavíme aktivní konfiguraci na Release u FormPrintDemo.exe, MyClass1.dll a MyClass2.dll.

Po sestavení se v okně výstupu objeví:

Sestavení bylo úspěšně dokončeno.
Nové sestavení všeho: 3 úspěšně, 0 se nezdařilo, 0 přeskočeno

Doplníme AssemblyInfo.css o název a ostatní assembly, totéž uděláme pro MyClass1 assemblyInfo.cs. Do třídy MyClass2.dll přidáme Assembly Resource File(.resx) s názevem MyClass2. V průzkumníku řešení v sekci Source Files (MyClass2) je nový soubor AssemblyInfo.cpp, který doplníme jako předešlé dva soubory
assemblyInfo.cs. Znovu provedeme sestavení a otestujeme, zda jsme neudělali nějakou chybu.

Microsoft FxCop 10.0

Tento nástroj nám provádí statickou analýzu kódu. Poskytuje stovky pravidel, které provádějí různé typy analýz. Ve vyšších verzích VS je přímo součástí VS. Můžeme si tento nástroj nainstalovat z Microsoft windows SDK

Instalaci FxCopu provedeme podle pokynů k instalaci. Doporučuji tento nástroj používat. Pokud načteme naše soubory (FormPrintDemo.exe, MyClass1.dll a MyClass2.dll) do FxCopu (viz obrázek), nepřestaneme se divit.

FxCop 1 - Tisk celých formulářů ve Windows Forms
FxCop 2 - Tisk celých formulářů ve Windows Forms

Opravíme červeně zabarvené chybové hlášky mimo:

  • Assemblies should have valid strong names,myclass1.dll
  • Assemblies should have valid strong names,myclass2.dll
  • Assemblies should have valid strong names,FormPrin­tDemo.exe

Zde doporučuji se řídit selským rozumem pro žluté doporučení. Nakonec podepíšeme sestavení vygenerovaným silným jménem pomocí utility sn.exe. Po podepsání jednotlivých tříd budou uvedené 3 chybové položky zlikvidovány.

Vytvoříme instalační soubory a máme hotovo.

Závěr

V tomto tutoriálu jsem se pokusil ukázat jak tisknout pod .NET. Nevím, zda se mi to podařilo, těžko se píše pro posluchače, kde neznáte šířku jejich znalostí.

Výstup tisku - Tisk celých formulářů ve Windows Forms

Několik funkcí navíc

Pokud vytváříte Demo verzi, můžete vykreslovat na formulář nebo uživatelské prvky různý barevný text.

#if(DEBUG == true)

/// <summary>
/// Při demoverzi píše text pro tisk na formulář
/// </summary>
internal class DemoVerze
{
    private List<Color> color = new List<Color>(11) ;

    internal DemoVerze()
    {
        color.Add(Color.Azure);
        color.Add(Color.LightCyan);
        color.Add(Color.Violet);
        color.Add(Color.LightGray);
        color.Add(Color.LightGreen);
        color.Add(Color.LightPink);
        color.Add(Color.LightSalmon);
        color.Add(Color.LightYellow);
        color.Add(Color.LightSteelBlue);
        color.Add(Color.LightGoldenrodYellow);
    }

    internal void DrawRectanglesForm(Control controls, Graphics g)
    {
        Point pp = new Point(0, 0);
        List<Point> point = new List<Point>(8) { pp, pp, pp, pp,pp,pp,pp,pp };
        point[0] = new Point(230, 230);
        point[1] = new Point(600, 230);
        point[2] = new Point(230, 600);
        point[3] = new Point(600, 600);
        point[4] = new Point(970, 230);
        point[5] = new Point(970, 600);
        point[6] = new Point(230, 940);
        point[7] = new Point(600, 940);

        // Vytvoření per, štětců a písem pro kresbu
        using (Font captionFont = new Font("Arial", 26))
        {
            // Nastavení matice tak, aby se následující
            // kresby objevily ve středu PictureBoxu
            g.Clip = new Region(RealPageSettingsBounds);

            for (int j = 0; j < 8; j++)
            {
                g.TranslateTransform(point[j].X, point[j].Y, MatrixOrder.Prepend);
                // Režim vyhlazování nastavíme na HighQuality,
                // aby se nakreslily čisté linie
                g.SmoothingMode = SmoothingMode.HighQuality;
                // Nakreslení 10 obdélníků s nápisem a
                // pokaždé otočíme matici o 36 stupňů
                for (int i = 0; i < 10; i++)
                {
                    using (Brush blackBrush = new SolidBrush(color[i]))
                    {
                        g.RotateTransform(36, MatrixOrder.Prepend);
                        g.DrawString("    Demo ", captionFont, blackBrush, 25, 25);
                    }
                }
                g.ResetTransform();
            }
            // Vrátíme transformaci do původního stavu
            g.ResetClip();
            g.SmoothingMode = SmoothingMode.Default;
        }
    }
#endif
Demo ukázka - Tisk celých formulářů ve Windows Forms

Důležité

Pokud používáte VS 2013, je třeba doinstalovat VB-PoverPack a dodělat reference na toto assemblies.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 139x (5.66 MB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

Předchozí článek
Tisk formuláře a ovládacích prvků Windows Forms
Všechny články v sekci
Tisk celých formulářů ve Windows Forms
Článek pro vás napsal zpavlu
Avatar
Uživatelské hodnocení:
2 hlasů
C# , C++ a assembler
Aktivity