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

C# .NET Windows Forms 6. díl - 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
FxCop 2

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

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

Důležité

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


 

Stáhnout

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

 

  Aktivity (1)

Článek pro vás napsal zpavlu
Avatar
C# a C++

Jak se ti líbí článek?
Celkem (1 hlasů) :
4444 4


 



 

 

Komentáře

Avatar
zpavlu
Redaktor
Avatar
zpavlu:

Byl jsem požádán o zdrojáky ve VS 2013. Zde jsou. Nevím zda to dělám dobře
PZ

Odpovědět 28.9.2014 20:29
PZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.