Projekt 117raster slouží jako prostředí pro experimenty s rastrovými obrázky. Projekt můžete obohacovat svými vlastními moduly, které se potom dají spouštět v běžící WinForms aplikaci.
Základem poslouží projekt 117raster z repository grcis (GIT). Je připravena aplikace, která umí načítat a ukládat rastrové obrázky a spouštět na nich moduly implementované s pomocí interface IRasterModule.
Základ projektu je v adresáři 117raster, odkazuje se i na některé pomocné třídy z adresáře common. Některé z modulů jsou v adresáři modules.
Projekt obsahuje na ukázku modul ModuleGlobalHistogram, který je uložený v podadresáři ModuleHistogram a celý je vložen do VS projektu. Tento modul umí počítat histogramy obrázku a kreslit je buď souhrnně (šedé odstíny "gray") nebo po jednotlivých barevných složkách ("red", "green" nebo "blue")
Další ukázkový module je ModuleFormula, který je uložen v podadresáři modules/ModuleFormula a je též vložen do našeho VS projektu. Tento modul umí za běhu načítat C# skripty z textových souborů a v nich uložené funkce používat k vytváření nových nebo transformaci existujících obrázků.
Modul nemá žádné vlastní GUI a potřebný kód načítá ze zadaného textového souboru (default = Contrast.cs). Soubor scriptu můžete za běhu měnit a není potřeba aplikaci restarovat! Významné funkce ("lambdy"), které můžete ve scriptu definovat, jsou:
Po kompilaci a spouštění projektu 117raster se objeví formulář, do kterého lze načítat rastrové obrázky buď tlačítkem Load image nebo myší systémem "Drag & Drop". Po načtení obrázku do paměti si ho můžeme v aplikaci prohlížet (ke škálování resp. posunování slouží kolečko resp pravé tlačítko myši).
Vlevo dole se v list-boxu ukazují všechny "moduly" (třídy implementující interface IRasterModule), které byly při kompilaci nalezeny. Modul zapneme (aktivujeme) jeho výběrem a tlačítkem Activate module. Pokud má modul nějaké GUI okno, to se v takovém případě zobrazí a uživatel pak může opakovaně provádět výpočet nad načteným vstupním obrázkem. K opakovanému spuštění výpočtu dojde:
Po spočtení výsledného obrázku se výsledek zobrazí ve formuláři (check-box "result" slouží k přepínání vstupu a výstupu). Jestliže je třeba na spočítaný obrázek navázat – použít ho jako vstup pro nový výpočet – použije se tlačítko "Result -> input".
Obecné API pro moduly, které pracují s rastrovými obrázky. Každý modul
může mít žádný až několik vstupních obrázků (Bitmap nebo FloatImage),
žádný až několik výstupních obrázků (Bitmap nebo FloatImage)
a volitelné GUI okno (formulář), ze kterého se dají zadávat dodatečné informace a/nebo
v něm ukazovat přímo spočítané výsledky.
Pokud je výsledkem výpočtu modulu zase rastrový obraz, ten se zobrazí
přímo v původním formuláři aplikace 117raster (k přepínání vstupu a výstupu
slouží check-box "result")
Přehled nejdůležitějších položek interface IRasterModule
Implementuje skoro všechny položky interface IRasterModule, pro pohodlnost i snazší kompatibilitu do budoucna se doporučuje odvozovat všechny Vaše budoucí moduly právě od této třídy!
Pravé tlačítko myši – posunování obrázku.
Kolečko myši – zmenšení/zvětšení (s klávesou Shift rychleji).
"Page Up", "Page Down", "+", "-" – zmenšení/zvětšení (s klávesou Shift rychleji).
Tlačítko "Zoom 100%" – reset zobrazení = 100% zvětšení, umístění obrázku do levého horního rohu.
Stačí do projektu 117raster připojit novou třídu implementující interface IRasterModule (nebo ještě lépe potomka class DefaultRasterModule). Aplikace sama třídu rozpozná a přidá do list-boxu "Module".
Nové studentské moduly (řešení úloh) vytvářejte prosím ve speciálně pojmenovaných namespace, např. použijte Vaše jméno a příjmení bez diakritiky, zredukují se tím případné konflikty při překladů více modulů najednou. Příklad – místo
namespace Modules;
namespace JanVoprsalek;
Zatím ne.
Copyright (C) 2019-2020 J.Pelikán, last change: 2020-10-26 01:19:08 +0100 (Mon, 26 Oct 2020)